python - 我可以在可用于 ubuntu docker 镜像的 macOS 上为 python 包创建轮子吗?

标签 python ubuntu docker dockerfile python-wheel

我正在做一个 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/

相关文章:

python - HDFS的图像数据帧用于图像分类

docker - 如何检查mysql docker容器内的mysql版本

docker - 如何在我的 CMD 脚本中设置环境变量

javascript - 在加载 CGI 脚本之前等待页面加载?

python - 在python中从unicode(对于外语)段落中提取主题标签

python - 如何优化此 Python 脚本,该脚本检查一个数字是否等于其数字总和乘以一个因数?

linux - 在容器中运行 apt update && apt install -y sudo 失败

Ubuntu Live USB 继续占用空间

linux - 为什么我的 initramfs 脚本没有运行?

docker - 如何在 minikube 注册表中创建 docker 镜像