在Mac上生成等效的python“ jar”以在Windows上运行

时间:2019-01-02 04:35:25

标签: python deployment build package cross-platform

我是Python的新手。如果我想打包Java程序,则可以使用Maven定义依赖项并构建一个Jar,其中包括Mac上所需的所有库,也可以使用Windows cmd控制台运行该JAR,仅在该Windows机器上安装了Java,即{ {1}}

我想知道如何通过使用一些第三方库的Python程序实现相同的目标。我搜索了诸如滚轮之类的一些选项,但仍然对它们的作用感到困惑。您可以帮忙给我更多指导吗?我正在使用PyCharm作为IDE。非常感谢。

1 个答案:

答案 0 :(得分:1)

对于最接近的.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安装依赖项。

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

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


当然,所有这些都假设您的依赖项是纯Python。如果您有一些软件包具有针对macOS的已编译二进制文件,则在Windows上将无法使用。实际上,即使您在Windows上编译C扩展,也通常无法从zip存档中执行。

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