python:2.7-alpine在Docker中的psycopg2安装
要在python中使用PostgreSql,我需要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 -
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
的源标题包,在这种情况下,当pip编译libpq
时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