python - 在 Mac 上生成等效的 python "jar"以在 Windows 上运行

标签 python deployment build package cross-platform

我是 Python 新手。如果我想打包一个 Java 程序,我可以使用 Maven 定义依赖项并构建一个 Jar,其中包括 Mac 上所需的所有库,也可以使用 Windows cmd 控制台运行,只需要在该 Windows 计算机上安装 java 即 java -myProgram.jar

我想知道如何使用使用一些第三方库的 Python 程序实现相同的效果。我搜索了一些选项,例如轮子,但仍然对它们的作用感到困惑。您能帮我提供更多这方面的指导吗?我使用 PyCharm 作为 IDE。非常感谢。

最佳答案

对于最接近的 .jar 等效项,您需要一个 Python ZIP 应用程序。这仅需要在用户计算机上安装合适版本的 Python。 https://docs.python.org/3/library/zipapp.html#creating-standalone-applications-with-zipapp

基本上,您可以使用 pip(Python 的包管理器)将列出的依赖项安装到要压缩的目录中。

$ python -m pip install foopackage barpackage>=1.0 --target source
$ python -m zipapp source -m "source.foomodule:main" # use -c to compress

其中 source 是包含程序的源目录的名称,main 是入口点的名称(在 foomodule 中)。这将创建一个 .pyz 文件,它相当于 Python 中的 .jar。

然后您可以在 Windows 计算机上运行它

> py source.pyz

其中 py 是您的 python 启动器或您已安装的任何适当的 python 可执行文件。

如果您有 requirements.txt,您可以在压缩之前从中获取 pip install 依赖项。

$ python -m pip install -r requirements.txt --target source

(如果不这样做,您可以尝试从 pip freeze 的输出中生成一个,但这就是您已安装的所有内容,可能太多了。)

<小时/>

当然,这一切都假设您的依赖项是纯 Python。如果您有一些包含适用于 macOS 的已编译二进制文件的软件包,则它无法在 Windows 上运行。事实上,C 扩展通常无法从 zip 存档内部执行,即使您在 Windows 上编译它们也是如此。

如果您确实需要这样的二进制文件,我建议尝试使用第三方工具,例如 pex .

关于python - 在 Mac 上生成等效的 python "jar"以在 Windows 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54001240/

相关文章:

python - Vim 中的 Omnicomplete 可以为 python/3 完成函数名称还是只是方法?

python - DCGAN 中矩阵大小不兼容 : In[0]: [16, 1024]、In[1] : [16384, 1]

python - Google Cloud VM 在部署时创建新版本

Python 在 IDLE 中播放声音,但在 Thonny 中给出 "no module called gi"错误; Ubuntu 终端中的混合结果

python - Neomodel 密码查询缺少位置参数

java - Gradle Build 失败,但 github repo 出现异常

java - 建筑印度语键盘

grails - 访问 BuildConfig 中的设置

angular - angular2 的 webpack 生产无法使用 URL 进行导航

ruby - Heroku:未找到且进程已退出