How do I install python on alpine linux?

Question:

How do I install python3 and python3-pip on an alpine based image (without using a python image)?

 $ apk add --update python3.8 python3-pip
 ERROR: unsatisfiable constraints:
   python3-pip (missing):
     required by: world[python3-pip]
   python3.8 (missing):
     required by: world[python3.8]
Asked By: Cutaraca

||

Answers:

This is what I use in a Dockerfile for an alpine image:

# Install python/pip
ENV PYTHONUNBUFFERED=1
RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
RUN python3 -m ensurepip
RUN pip3 install --no-cache --upgrade pip setuptools
Answered By: Terry Spotts

Take a look at the alpine package repo: https://pkgs.alpinelinux.org/packages
So what you are looking for are the python3 and py3-pip packages.

A suitable command to use inside a dockerfile/etc. would be:

apk add --no-cache python3 py3-pip

Explanation of the --no-cache flag

Note however, that you need to add the community repository since py3-pip is not present on main.

Answered By: Linus H.

You can try this command:

apk add python3
Answered By: adobean

You may use the python official image which offers alpine tags as well. You will probably get the most state-of-the-art python install:

e.g.:

FROM python:3-alpine

Answered By: Vincent Pazeller

instead of python3-pip install py3-pip

apk add --update python3 py3-pip
Answered By: ali mirmohammadi

It looks like you’re trying to install a specific minor version of Python3 (3.8), you can do this in Alpine by using semver like this which will install a version of python3>=3.8.0 <3.9.0-0:

apk add python3=~3.8
Answered By: TomNash

Additional option is to build python during image build:

FROM alpine:latest

# you can specify python version during image build
ARG PYTHON_VERSION=3.9.9

# install build dependencies and needed tools
RUN apk add 
    wget 
    gcc 
    make 
    zlib-dev 
    libffi-dev 
    openssl-dev 
    musl-dev

# download and extract python sources
RUN cd /opt 
    && wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz                                               
    && tar xzf Python-${PYTHON_VERSION}.tgz

# build python and remove left-over sources
RUN cd /opt/Python-${PYTHON_VERSION}  
    && ./configure --prefix=/usr --enable-optimizations --with-ensurepip=install 
    && make install 
    && rm /opt/Python-${PYTHON_VERSION}.tgz /opt/Python-${PYTHON_VERSION} -rf
                                                                                                                                                                                                                                               # rest of the image, python3 and pip3 commands will be available

This snippet downloads and builds python of specified version from sources (together with pip). It may be an overkill but sometimes it may come in handy.

Answered By: Monsieur Merso
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.