用于python的psycopg2安装:Docker中的2.7-alpine

时间:2017-01-10 17:36:30

标签: postgresql python-2.7 docker alpine

要在python中使用PostgreSql,我需要

pip install psycopg2   

但是,它依赖于libpq-dev和python-dev。我想知道如何在高山中安装依赖项?感谢。

这是一个Dockerfile:

FROM python:2.7-alpine

RUN apk add python-dev libpq-dev
RUN pip install psycopg2

,输出为:

  

第3步:RUN apk添加python-dev libpq-dev --->运行   3223b1bf7cde警告:忽略APKINDEX.167438ca.tar.gz:没有这样的文件   或目录警告:忽略APKINDEX.a2e6dac0.tar.gz:没有这样的文件   或目录错误:不可满足的约束:libpq-dev(缺失):       要求:world [libpq-dev] python-dev(缺失):       要求:world [python-dev]错误:服务'服务'无法构建:命令' / bin / sh -c apk添加python-dev libpq-dev'回   非零代码:2

7 个答案:

答案 0 :(得分:19)

如果你只需要在基于python:2.7-alpine的Docker镜像上为python 2.7安装psycopg2,那么下面的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

答案 1 :(得分:6)

我无法从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

答案 2 :(得分:5)

编译/安装psycopg2之前的说明

libpq是PostgreSQL https://www.postgresql.org/docs/9.5/libpq.html的客户端库

postgresql-dev是带有标头的软件包,用于链接库/二进制文件中的libpq,与psycopg一样。

我在alpine 3.7中使用以下配置,我添加了一些注释来解释它。

# Installing client libraries and any other package you need
RUN apk update && apk add libpq

# Installing build dependencies
RUN apk add --virtual .build-deps gcc python-dev musl-dev postgresql-dev

# Installing and build python module
RUN pip install psycopg2

# Delete build dependencies
RUN apk del .build-deps

答案 3 :(得分:4)

看起来像你需要的包是libpq而不是lobpq-dev:

https://pkgs.alpinelinux.org/package/edge/main/x86/py2-psycopg2

查看右侧的依赖项

答案 4 :(得分:3)

在Docker的Alpine Linux下运行Python 3.7和PostgreSQL时出现问题。 这篇文章对https://www.rockyourcode.com/install-psycopg2-binary-with-docker/

有帮助

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

RUN apk update && \
apk add --no-cache --virtual build-deps gcc python3-dev musl-dev && \
apk add postgresql-dev

答案 5 :(得分:0)

将其添加到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/*

答案 6 :(得分:0)

帮助我的是:

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,如Docker: Installing python cryptography on alpine linux distribution所示