如何在alpine linux上安装python?

mv1qrgav  于 2023-06-29  发布在  Linux
关注(0)|答案(8)|浏览(455)

如何在基于alpine的镜像上安装python3和python3-pip(不使用python镜像)?

$ 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]
wvyml7n5

wvyml7n51#

这是我在Dockerfile中使用的alpine镜像:

# 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
fslejnso

fslejnso2#

看看alpine的package repo:https://pkgs.alpinelinux.org/packages所以你要找的是python3py3-pip包。
在dockerfile/etc中使用的合适命令。将是:

apk add --no-cache python3 py3-pip

--no-cache标志的说明
但是请注意,您需要添加社区存储库,因为py3-pipmain上的not present

odopli94

odopli943#

而不是python3-pipinstallpy 3-pip

apk add --update python3 py3-pip
kcrjzv8t

kcrjzv8t4#

你可以试试这个命令:

apk add python3
tuwxkamq

tuwxkamq5#

额外的选项是在镜像构建期间 build python:

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

此代码段从源代码下载并构建指定版本的python(与pip一起)。这可能是一个矫枉过正,但有时它可能会派上用场。

xn1cxnb4

xn1cxnb46#

你可以使用python官方图片,它也提供了alpine标签。你可能会得到最先进的python安装:
例如:
FROM python:3-alpine

pb3skfrl

pb3skfrl7#

看起来你正在尝试安装一个特定的次要版本的Python3(3.8),你可以在Alpine中使用semver这样做,它将安装一个版本的python3>=3.8.0 <3.9.0-0

apk add python3=~3.8
bogh5gae

bogh5gae8#

我不得不在空气间隙网络中安装python,所以我无法运行apk add。下面是我如何在一个在线alpine容器中获得所需的包:

apk fetch python3 py3-pip libbz2 libexpat libffi gdbm mpdecimal libpanelw readline \
    sqlite-libs py3-setuptools libgcc libstdc++ py3-packaging py3-parsing

我的Dockerfile看起来像这样:

ENV PYTHONUNBUFFERED=1
COPY ./*.apk .

RUN apk add --allow-untrusted --no-network libgcc* libstdc++* gdbm* libbz2* \
    libexpat* libffi* libpanel* mpdecimal* \
    readline* sqlite* \
    python3-3.11.4-r0.apk py3-parsing* py3-packaging* py3-setuptools* py3-pip-23.1.2-r0.apk && \
    rm *.apk && \
    ln -sf python3 /usr/bin/python

地狱般的依赖得到了解决。

相关问题