在Alpine中安装python3软件包时出错

Die*_*gos 8 python docker alpine-linux

我目前正在从Alpine:3.7构建图像。

我遇到两个问题:

  • 摆锤(特别是python-dateutils包)
  • service_identity(特别是attrs包)

我收到的错误是:

找不到满足设置工具要求的版本(来自版本:)找不到与安装工具匹配的发行版

注意:所有软件包都使用pip下载预先缓存在目录中。

dockerfile如下所示:

RUN apk add --no-cache --virtual .build-deps <dev packages>
 && apk add --no-cache --update python3
 && pip3 install --upgrade pip setuptools

RUN pip3 install -f ./python-packages --no-index -r requirements.txt ./python-packages/pkgs

....
Run Code Online (Sandbox Code Playgroud)

dev包,例如libffi-dev,libressl-dev等。

Nic*_*lay 17

我不确定要在问题中构建的开发包的完整列表,但应该是以下内容:g++(GNU C++ 标准库和编译器)、python3-dev(python3 开发文件)、libffi-dev(libffi 开发文件)和openssl-dev(用于SSL v2/v3 和 TLS v1 开发文件)。

Dockerfile是:

FROM alpine:3.7
RUN apk add --no-cache --virtual .build-deps g++ python3-dev libffi-dev openssl-dev && \
    apk add --no-cache --update python3 && \
    pip3 install --upgrade pip setuptools
RUN pip3 install pendulum service_identity
Run Code Online (Sandbox Code Playgroud)


Die*_*gos 6

显然,在升级点时:

pip3 install --upgrade pip setuptools
Run Code Online (Sandbox Code Playgroud)

我删除了pip升级和安装工作。现在,我一直在研究在阿尔卑斯上升级pip的正确方法,并在执行此检查的github存储库中找到了一个Dockerfile :

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 && \
Run Code Online (Sandbox Code Playgroud)

通过在python和系统二进制文件的目录上执行符号链接,可以确保仅在调用pip命令时引用pip3