“Docker与django发行”;无模块psycopg2“模块-但是它';s已安装并在requirements.txt中
我有一个问题,django_api有错误“django.core.exceptions.impropertlyconfigured:加载psycopg2模块时出错:没有名为'psycopg2'的模块” 已安装psycopg2-> 已满足要求:psycopg2 in/Users/swestphal/Documents/privateProjects/vue_and_django/ddv/env/lib/python3.9/site-packages(2.8.6) 我的要求.txt“Docker与django发行”;无模块psycopg2“模块-但是它';s已安装并在requirements.txt中,django,docker,django-rest-framework,docker-compose,Django,Docker,Django Rest Framework,Docker Compose,我有一个问题,django_api有错误“django.core.exceptions.impropertlyconfigured:加载psycopg2模块时出错:没有名为'psycopg2'的模块” 已安装psycopg2-> 已满足要求:psycopg2 in/Users/swestphal/Documents/privateProjects/vue_and_django/ddv/env/lib/python3.9/site-packages(2.8.6) 我的要求.txt asgiref=
asgiref==3.3.4
Django==3.2.3
django-cors-headers==3.5.0
djangorestframework==3.12.4
psycopg2==2.8.6
psycopg2-binary==2.8.6
PyJWT==1.7.1
pytz==2021.1
docker exec admin_api pip install -r requirements.txt
这是我的Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
CMD python manage.py runserver 0.0.0.0:8000
这是我的docker-compose.yaml
version: '3.8'
services:
admin_db:
container_name: django_admin_db
image: postgres
restart: always
environment:
- POSTGRES_DB=django_admin
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- ./data/admin_db:/var/lib/postgresql/data
ports:
- 33066:3306
admin_api:
container_name: django_api
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
ports:
- '8000:8000'
depends_on:
- admin_db
谢谢你的帮助 但是你把它安装在容器里面了吗? 从requirements.txt重新安装的命令
asgiref==3.3.4
Django==3.2.3
django-cors-headers==3.5.0
djangorestframework==3.12.4
psycopg2==2.8.6
psycopg2-binary==2.8.6
PyJWT==1.7.1
pytz==2021.1
docker exec admin_api pip install -r requirements.txt
在requirements.txt中添加一行不会安装包(除非重新构建容器)
您还可以通过安装新软件包来加快速度:
docker exec admin_api pip install <package name>
docker exec admin\u api pip安装
这是postgresql的常见问题。您需要的是linux开发包
将此添加到dockerfile会有所帮助
RUN apt-get update \
# dependencies for building Python packages
&& apt-get install -y build-essential \
# psycopg2 dependencies
&& apt-get install -y libpq-dev
将psycopg2添加到requirements.txt后是否重新生成了图像?该错误消息是否还有其他上下文?“已安装”验证引用主机虚拟环境中的路径;如果您
docker run admin\u api pip freeze
它是否包含在容器环境中?您使用docker exec
所做的任何更改都将在容器退出后立即丢失。您不应使用docker exec
在容器中安装软件。不,如果软件包位于requirements.txt中,则不会安装。如果他重新构建,则会重新安装软件。在编写代码时,使用docker exec安装软件是可以的,不管怎样,这或是安装或是重建容器都可能需要很多时间。