无法在新的 docker 容器上安装 psycopg2-binary

新手上路,请多包涵

我在尝试在新的 Docker 容器上运行我的 django 项目时遇到了问题。这是我第一次使用 Docker,我似乎找不到在其上运行 Django 项目的好方法。尝试了多个教程后,我总是收到有关未安装 psycopg2 的错误。

要求.txt:

 -i https://pypi.org/simple
asgiref==3.2.7
django-cors-headers==3.3.0
django==3.0.7
djangorestframework==3.11.0
gunicorn==20.0.4
psycopg2-binary==2.8.5
pytz==2020.1
sqlparse==0.3.1

文件:

 # pull official base image
FROM python:3.8.3-alpine

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --upgrade pip

COPY ./requirements.txt .
RUN pip install -r requirements.txt

# copy project
COPY . .

# set project environment variables
# grab these via Python's os.environ
# these are 100% optional here

ENV PORT=8000
ENV SECRET_KEY_TWITTER = "***"

在运行 docker-compose build 时,出现以下错误:

 Error: pg_config executable not found.

pg_config is required to build psycopg2 from source. Please add the directory

containing pg_config to the $PATH or specify the full executable path with the

option:

python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.

If you prefer to avoid building psycopg2 from source, please install the PyPI

'psycopg2-binary' package instead.

我很乐意回答任何可能导致解决方案的问题。另外,也许有人可以向我推荐一个关于 dockerizing django 应用程序的好教程?

原文由 kczan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

在 Alpine Linux 上,您需要编译所有包,即使 PyPI 上有预编译的二进制轮。在标准的基于 Linux 的图像上,您不会( https://pythonspeed.com/articles/alpine-docker-python/ - 我在那里写的其他文章可能会有帮助,例如关于安全性)。

因此,将您的基本图像更改为 python:3.8.3-slim-busterpython:3.8-slim-buster 它应该可以工作。

原文由 Itamar Turner-Trauring 发布,翻译遵循 CC BY-SA 4.0 许可协议

我成功了。这是代码:

 FROM python:3.8.3-slim #Image python:3.9.5-slim also works # Image python:3.9.5-slim-buster also works

RUN apt-get update \
    && apt-get -y install libpq-dev gcc \
    && pip install psycopg2


原文由 Zoltán Buzás 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题