在 alpine 中安装 python3 包时出错

Posted

技术标签:

【中文标题】在 alpine 中安装 python3 包时出错【英文标题】:Error when installing python3 packages in alpine 【发布时间】:2018-09-29 00:20:38 【问题描述】:

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

我遇到了两个问题:

pendulum(特别是 python-dateutils 包) service_identity(特别是 attrs 包)

我收到的错误是:

找不到满足 setuptools 要求的版本(来自版本:)找不到 setuptools 的匹配发行版

注意:所有包都使用 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

....

开发包如libffi-dev、libressl-dev等

【问题讨论】:

请在问题中添加requirements.txt 【参考方案1】:

显然在升级 pip 时:

pip3 install --upgrade pip setuptools

我删除了 pip 升级和安装工作。现在,我一直在研究在 alpine 上升级 pip 的正确方法,并在 github repo 中找到了一个 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 && \

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

【讨论】:

【参考方案2】:

我不确定要在问题中构建的开发包的完整列表,但应该如下: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

【讨论】:

如上所述,这些包不是问题。 Setuptools 它是标记为未找到的那个。

以上是关于在 alpine 中安装 python3 包时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中安装与 stringr 包相关的包时出错 [重复]

在 pycharm 中安装 cv2 时出错 - python 3.5.3

如何在alpine 3.12中安装qt4

在 python 3.10 中安装 dlib 库时出错

在 docker Alpine 中安装 pandas

如何在 alpine:3.8 中安装 Nodejs 8.12?