【问题标题】:Can I create wheels for python packages on macOS usable for a ubuntu docker image?我可以在 macOS 上为可用于 ubuntu docker 映像的 python 包创建轮子吗?
【发布时间】:2016-11-24 15:43:23
【问题描述】:

我正在开发一个 python/django 项目。对于部署,我想创建一个 ubuntu 16.04 docker 映像。当我在 ubuntu 本地主机上工作时,我会生成所有的 wheel 文件,它们可用于创建图像。 (我将所有这些轮子复制到 docker,因此我在 Dockerfile 中运行 RUN pip3 install --no-cache-dir --no-index -f wheelhouse -r requirements.txt 以使用本地轮子安装要求。其中wheelehouse 是我已将所有本地轮子复制到其中的文件夹。)

但是当我在 macOS 主机上创建轮子时,一些生成的轮子类似于 some_packagename-**macosx_10_6_intel**.whl 。因此它们不能用于创建 ubuntu docker 映像。

有没有办法强制pip wheel 为 linux 而不是从 macOS 上的源文件生成轮子?

【问题讨论】:

  • 你是如何造轮子的?您是否使用任何已编译的依赖项/扩展?
  • @Matthew 我通常使用pip wheel 制造轮子。例如aiohttp 是创建*_maacosx.whl 类轮子的包之一。

标签: python ubuntu docker dockerfile python-wheel


【解决方案1】:

如果你没有 C 扩展,那么你应该可以这样做:

python setup.py bdist_wheel --universal 

获取非平台特定的some_packagename-X.Y.Z-py2.py3-none-any.whl

如果您有 C 扩展,则需要生成特定于平台的轮子。

最好的方法是使用 Docker(在 MacOS 上在虚拟机中运行)和 manylinux Docker 容器为 Python 2.7 和 3.4-3.7 生成轮子。

由于manylinux 容器的创建方式,生成的轮子将安装在许多旧版本的 Linux 上。这比启动你自己的 Ubuntu XX.04 版本(可能在虚拟机中)要好得多,并且无法在任何使用旧编译器等的东西上安装它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-16
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2022-06-26
    • 1970-01-01
    相关资源
    最近更新 更多