Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

psycopg2 installation for python:2.7-alpine in Docker

To use PostgreSql in python I need to

pip install psycopg2   

However, it has dependency on libpq-dev and python-dev. I wonder how can I install the dependencies in alpine? Thanks.

Here is a Dockerfile:

FROM python:2.7-alpine

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

and the output is:

Step 3 : RUN apk add python-dev libpq-dev ---> Running in 3223b1bf7cde WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file or directory WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file or directory ERROR: unsatisfiable constraints: libpq-dev (missing): required by: world[libpq-dev] python-dev (missing): required by: world[python-dev] ERROR: Service 'service' failed to build: The command '/bin/sh -c apk add python-dev libpq-dev' returned a non-zero code: 2

like image 215
salehinejad Avatar asked Jan 10 '17 17:01

salehinejad


People also ask

Does Python Alpine have PIP?

alpine does not have a python package. Instead, it ships a python3 package instead. The python installation does not include pip .

What is PIP install psycopg2-binary?

$ pip install psycopg2-binary. This will install a pre-compiled binary version of the module which does not require the build or runtime prerequisites described below. Make sure to use an up-to-date version of pip (you can upgrade it using something like pip install -U pip ).

What is import psycopg2 in Python?

psycopg2 2.9.5 Psycopg is the most popular PostgreSQL database adapter for the Python programming language. Its main features are the complete implementation of the Python DB API 2.0 specification and the thread safety (several threads can share the same connection).


3 Answers

If you only need to install psycopg2 for python 2.7 on Docker image based on python:2.7-alpine then following code for Dockerfile will be nice for you:

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
like image 187
Andrii Rieznik Avatar answered Oct 19 '22 03:10

Andrii Rieznik


An explanation before compile/install psycopg2

  • libpq is the client library for PostgreSQL
  • postgresql-dev are the package with the source headers to link libpq in a library/binary in a compilation, in this case when pip compiles psycopg .

I use the following configuration in alpine 3.7, I add some comments to explain it.

# 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
like image 27
Felipe Buccioni Avatar answered Oct 19 '22 04:10

Felipe Buccioni


Had problems with running Python 3.7 and PostgreSQL under Alpine Linux in Docker. This article helped https://www.rockyourcode.com/install-psycopg2-binary-with-docker/

The main thing is to reference psypcopg2-binary in your requirements file and install the following packages (in Dockerfile):

RUN apk update && \
apk add --no-cache --virtual build-deps gcc python3-dev musl-dev && \
apk add postgresql-dev
like image 6
Aleksandr Avatar answered Oct 19 '22 04:10

Aleksandr