我正在做一个 python/django 项目。对于部署,我想创建一个 ubuntu 16.04 docker 镜像。当我在 ubuntu 本地主机上工作时,我会生成所有 wheel 文件,它们可用于创建图像。 (我将所有这些轮子复制到 docker,所以我在 Dockerfile 中运行 RUN pip3 install --no-cache-dir --no-index -f wheelhouse -r requirements.txt
以使用本地安装需求wheels。其中 wheelehouse
是一个文件夹,我已将我所有的本地 wheels 复制到其中。)
但是当我在 macOS 主机上创建轮子时,一些生成的轮子类似于 some_packagename-**macosx_10_6_intel**.whl
。所以它们不能用于创建 ubuntu docker 镜像。
有没有一种方法可以强制 pip wheel
为 linux 而不是从 macOS 上的源文件生成轮子?
最佳答案
如果您没有 C 扩展,那么您应该能够:
python setup.py bdist_wheel --universal
获取非平台特定的 some_packagename-X.Y.Z-py2.py3-none-any.whl
如果您有 C 扩展,则需要生成平台特定的 wheel。
最好的方法是使用 Docker(在 MacOS 上运行在虚拟机中)和 manylinux Docker 容器为 Python 2.7 和 3.4-3.7 生成轮子。
生成的轮子将安装在许多旧版本的 Linux 上,因为 manylinux
容器的创建方式。这比启动您自己的 Ubuntu XX.04 版本(可能在虚拟机中)并且无法将其安装在使用比您的 Ubuntu 版本更旧的编译器等的任何东西上要好得多。
关于python - 我可以在可用于 ubuntu docker 镜像的 macOS 上为 python 包创建轮子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40790301/