【问题标题】:I can't install psycopg2 in my virtual environment我无法在我的虚拟环境中安装 psycopg2
【发布时间】:2023-03-14 07:50:02
【问题描述】:

我为专业人士买了一本 Django 书,目前正在阅读 PostgreSQL 的第 2 章。我在我的虚拟环境中安装了 django,我的项目在 docker 中,如下面的代码所示。

当我尝试安装 psycopg 时出现错误: 警告:在您的系统上未找到 Python 3.10... 找不到“pyenv”和“asdf”来安装 Python。 您可以使用以下命令指定特定版本的 Python: $ pipenv --python path/to/python.

我运行命令:docker-compose exec web pipenv install psycopg2-binary==2.8.5

我的 Dockerfile 是

FROM python:3.9

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code

COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system

COPY . /code/

我的 docker-compose.yml 文件是

version: "3.9"

services:
  web:
    build: .
    command: python3 /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:
      - db
  db:
    image: postgres:11
    environment:
    - "POSTGRES_HOST_AUTH_METHOD=trust"

【问题讨论】:

  • 您的帖子中似乎缺少 Dockerfile 的第一行。 FROM 声明。
  • 你通常不应该在运行的容器中安装东西;一旦该容器退出,您docker-compose exec ... pipenv install 的任何内容都会丢失。您是否需要将依赖项添加到您的 Pipfile 中?您在这里需要 Docker,还是基于主机的虚拟环境更容易使用?
  • Dockerfiledocker-compose.yml 中的3.9 更改为3.7。

标签: django postgresql docker docker-compose psycopg2


【解决方案1】:

即使我来晚了......买了同一本书并遇到了同样的问题。正如@David Maze 提到的退出容器docker-compose down,不要在你的venv 内并使用pipenv 安装psycopg2

pipenv install psycopg2

然后重新启动您的容器,一切都应该正常工作。您必须将其写入您的 Pipfile,而不是写入您的活动 - 运行 - 容器。

docker-compose up -d --build

【讨论】:

  • 'docker build . ' 和 'docker-compose up -d' 会做同样的事情。
猜你喜欢
  • 2021-06-27
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2018-04-19
  • 2017-04-10
  • 2019-04-27
  • 2018-02-20
  • 1970-01-01
相关资源
最近更新 更多