Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:2.7-alpine在Docker中的psycopg2安装_Python_Postgresql_Python 2.7_Docker_Alpine - Fatal编程技术网

python:2.7-alpine在Docker中的psycopg2安装

python:2.7-alpine在Docker中的psycopg2安装,python,postgresql,python-2.7,docker,alpine,Python,Postgresql,Python 2.7,Docker,Alpine,要在python中使用PostgreSql,我需要 pip install psycopg2 但是,它依赖于libpq-dev和python-dev。我想知道如何在alpine中安装这些依赖项?谢谢 以下是Dockerfile: FROM python:2.7-alpine RUN apk add python-dev libpq-dev RUN pip install psycopg2 RUN apk update && \ apk add --no-cache -

要在python中使用PostgreSql,我需要

pip install psycopg2   
但是,它依赖于libpq-dev和python-dev。我想知道如何在alpine中安装这些依赖项?谢谢

以下是Dockerfile:

FROM python:2.7-alpine

RUN apk add python-dev libpq-dev
RUN pip install psycopg2
RUN apk update && \
apk add --no-cache --virtual build-deps gcc python3-dev musl-dev && \
apk add postgresql-dev
输出为:

步骤3:运行apk add python dev libpq dev-->Running in 3223BF7CDE警告:忽略APKINDEX.167438ca.tar.gz:没有这样的文件 或目录警告:忽略APKINDEX.a2e6dac0.tar.gz:没有这样的文件 或目录错误:不可满足的约束:libpq dev(缺少): 所需人员:world[libpq dev]python dev(缺少): 必需:world[python dev]错误:无法生成服务“Service”:返回命令“/bin/sh-c apk add python dev libpq dev” 非零代码:2


似乎您需要的软件包是
libpq
而不是
libpq-dev


查看右侧的依赖项

如果您只需要在Docker映像上安装psycopg2 for python 2.7,则Dockerfile的以下代码将非常适合您:

FROM python:2.7-alpine

RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev

RUN pip install psycopg2

我无法从python:2.7.13-alpine安装它。结果是:

FROM gliderlabs/alpine:3.3

RUN apk add --no-cache --update \
    python \
    python-dev \
    py-pip \
    build-base

RUN apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add --no-cache --update postgresql-dev && \
    pip install psycopg2==2.7.1

编译/安装psycopg2之前的说明

  • libpq
  • postgresql-dev
    是在编译过程中,在库/二进制文件中链接
    libpq
    的源标题包,在这种情况下,当pip编译
    psycopg
我在
alpine 3.7
中使用了以下配置,我添加了一些注释来解释它

#安装客户端库和您需要的任何其他软件包
运行apk更新和apk添加libpq(&A)
#安装生成依赖项
#对于python3,您需要添加python3 dev*请上传评论
#如果您使用此选项,则在下面的@its30*
运行apk add--virtual.build deps gcc python dev musl dev postgresql dev
#安装和构建python模块
运行pip安装psycopg2
#删除生成依赖项
运行apk del.build deps
将其添加到dockerfile中

RUN apk update && apk add --no-cache --virtual .build-deps\
    postgresql-dev gcc libpq  python3-dev musl-dev linux-headers\ 
    && pip install --no-cache-dir -r requirements.txt\
    && apk del .build-deps\
    && rm -rf /var/cache/apk/*

在Docker的Alpine Linux下运行Python 3.7和PostgreSQL时遇到问题。 这篇文章有帮助

主要是在您的需求文件中引用
psypcopg2 binary
,并安装以下软件包(在Dockerfile中):

帮助我的是:

RUN apk add --no-cache python3 \
&& python3 -m ensurepip \
&& pip3 install --upgrade pip setuptools \
&& apk add build-base \
&& apk add gcc musl-dev libffi-dev openssl-dev python3-dev \
&& apk add postgresql-dev \
&& rm -r /usr/lib/python*/ensurepip && \
if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \
rm -r /root/.cache

RUN pip install --trusted-host pypi.python.org psycopg2

特别是
apk add gcc musl dev libffi dev openssl dev python3 dev
,如中所示,我已尝试仅安装lnstall libpq,但它不起作用。感谢您的回答;看起来libpq不是解决方案。这里是docker响应的一部分:“步骤3:运行apk add libpq-->在04206f15a8f7中运行警告:忽略APKINDEX.167438ca.tar.gz:没有这样的文件或目录警告:忽略APKINDEX.a2e6dac0.tar.gz:没有这样的文件或目录错误:无法满足的约束:libpq(缺少):world[libpq]所需”最后我安装了系统包并将其从需求中删除。TXT我认为这是一个有效的解决方案。psycopg2需要psotgresql libs,而这反过来又需要libpq作为运行时(动态链接)依赖项。对于python3,我必须向依赖项中添加
python3 dev