【问题标题】:Python ARM in Docker - Installing requirements takes agesDocker 中的 Python ARM - 安装要求需要很长时间
【发布时间】:2021-08-07 23:41:26
【问题描述】:

我想运行一个包含一些 Python 机器人的 Docker 容器。这些脚本需要 pandas、numpy 和 matplotlib 等库。 在 x86 环境中一切正常,但在 Arm 环境中构建映像需要很长时间。 据我了解,似乎需要为 Arm 编译库,而不仅仅是下载编译后的文件。我正在努力寻找一种方法来避免这一切。

  1. Matplotlib、pandas、numpy:它们是相当重的包,但我只需要一些功能。这些库是精简版吗?
  2. 有什么方法可以将编译后的内容存储在管道某处的永久缓存中? (我同时使用 GitHub 和 GitLab 来构建它)

任何帮助表示赞赏 问候

【问题讨论】:

    标签: python docker arm gitlab-ci github-actions


    【解决方案1】:

    Matplotlib 至少有 ARM 轮子 (aarch64)。我检查的方式是去https://pypi.org/project/matplotlib/,点击左边的下载文件,然后寻找aarch64wheels。

    因此,如果您使用的是足够新版本的 pip,您应该能够获得轮子。确保在安装其他软件包之前执行pip install --upgrade pip

    其次,如果您确实需要从头开始编译,您可以使用 BuildKit 的新缓存功能缓存生成的文件 — 请参阅此处https://pythonspeed.com/articles/docker-cache-pip-downloads/。您可能需要指定一个不同的目录来缓存,无论临时轮子最终在哪里,但这应该是可能的。

    【讨论】:

    • 我不是python专家,但我认为docker builder确实是下载轮子然后编译。编译matplotlib、numpy和pandas并推送容器需要将近2个小时
    【解决方案2】:

    正如@Itamar Turner-Trauring 所提到的,matplotlibnumpypandas 以及更多的图书馆为aarch64x86 存储轮子。 在我的例子中,pip 默认下载 x86 轮子,然后它必须在构建期间编译它们,这需要很长时间。

    将我使用的pandas 版本从1.1.5 更改为1.3.5 后,pip 日志发生了变化

    来自:

    Downloading https://****/pypi/download/pandas/1.1.5/pandas-1.1.5.tar.gz (5.2 MB)

    收件人:

    Downloading https://****/pypi/download/pandas/1.3.5/pandas-1.3.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.9 MB)

    整个构建时间从 58 分钟变为 8 分钟。

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 2018-01-15
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 2018-02-16
      • 2012-08-03
      • 1970-01-01
      相关资源
      最近更新 更多