我正在寻找 python 世界中相当于 uber-jar 的东西。
- 我需要将 python 包分发到所有三个主要平台(Windows、Mac、Linux)。
- 它必须与其所有依赖项捆绑在一起,因为目标平台可能没有互联网。
它必须是跨平台发行版,所以我不必为多个目标构建。也就是说,我应该能够像这样在所有平台上运行它:
python package.ext
您可以假设该包是纯 python(无 native 代码)。 有什么东西可以满足这些要求吗?
我知道以下选项,每个选项都有缺陷:
.whl
包需要pip
进行安装。- 我不知道如何创建包含所有包依赖项的
.egg
。 - 此 PEP:http://legacy.python.org/dev/peps/pep-0441显示 python 支持运行
.zip
文件,但是据我所知,创建此类 zip 的最佳工具是 pex ( https://github.com/pantsbuild/pex ),我认为它不支持 Windows
最佳答案
Java 的“uber-jar”(使用 shade 插件制作)的一个 Python 替代品可能是简单地制作一个 整个 虚拟环境的 tarball,并在您的部署过程中使用它.
这种方法(对于 JAR 也是如此!)的问题在于其中一个包需要本地库。但我会说这是一个不同的故事......
另一种(现代)替代方法是简单地创建一个 Docker 镜像。
关于相当于 uber-jar 的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37977289/