“Docker与django发行”;无模块psycopg2“模块-但是它';s已安装并在requirements.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=

我有一个问题,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==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安装软件是可以的,不管怎样,这或是安装或是重建容器都可能需要很多时间。