web-dev-qa-db-fra.com

installation psycopg2 pour python: 2.7-Alpine dans Docker

Pour utiliser PostgreSql dans python je dois

pip install psycopg2   

Cependant, il dépend de libpq-dev et python-dev. Je me demande comment puis-je installer les dépendances en alpin? Merci.

Voici un Dockerfile:

FROM python:2.7-Alpine

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

et la sortie est:

Étape 3: RUN apk add python-dev libpq-dev ---> Exécution dans 3223b1bf7cde AVERTISSEMENT: Ignorer APKINDEX.167438ca.tar.gz: Aucun fichier ou répertoire de ce type AVERTISSEMENT: Ignorer APKINDEX.a2e6dac0.tar.gz: Aucun fichier ou répertoire ERREUR: contraintes non satisfaisantes: libpq-dev (manquant): requis par: world [libpq-dev] python-dev (manquant): requis par: world [python-dev] ERREUR: Le service 'service' n'a pas pu être construit: La commande '/ bin/sh -c apk add python-dev libpq-dev' a renvoyé un code non nul: 2

16
salehinejad

Si vous avez seulement besoin d'installer psycopg2 pour python 2.7 sur l'image Docker basée sur python: 2.7-Alpine alors le code suivant pour Dockerfile sera bien pour vous:

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
21
Sant

Une explication avant de compiler/installer psycopg2

libpq est la bibliothèque cliente pour PostgreSQL https://www.postgresql.org/docs/9.5/libpq.html

postgresql-dev sont le paquet avec les en-têtes pour lier libpq dans une bibliothèque/binaire comme psycopg.

J'utilise la configuration suivante dans Alpine 3.7, j'ajoute quelques commentaires pour l'expliquer.

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

# Installing build dependencies
# For python3 you need to add python3-dev *please upvote the comment
# of @its30 below if you use this*
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
8
Felipe Buccioni

Je n'ai pas pu l'installer à partir de python:2.7.13-Alpine. A fini avec ceci:

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
5
pbatey

On dirait que le paquet dont vous avez besoin est libpq et non lobpq-dev:

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

Jetez un œil aux dépendances à droite

4

ajoutez-le dans 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/*
0