【问题标题】:Generate python "jar" equivalent on Mac to be run on windows在 Mac 上生成等效的 python“jar”以在 Windows 上运行
【发布时间】:2019-05-28 19:12:12
【问题描述】:

我是 Python 新手。如果我想打包一个 Java 程序,我可以使用 Maven 来定义依赖项并构建一个 Jar,包括 Mac 上所需的所有库,它也可以使用 windows cmd 控制台运行,只在该 windows 机器上安装 java 即@ 987654321@

我想知道如何使用使用一些 3rd 方库的 Python 程序来实现相同的目标。我搜索了一些选项,例如轮子,但仍然对它们的作用感到困惑。你能帮忙给我更多的指导吗?我使用 PyCharm 作为 IDE。非常感谢。

【问题讨论】:

    标签: python deployment build package cross-platform


    【解决方案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 上运行。事实上,C 扩展通常无法从 zip 存档中执行,即使您在 Windows 上编译它们也是如此。

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

    【讨论】:

    • 谢谢!会试试这个。
    猜你喜欢
    • 2017-08-09
    • 2012-04-04
    • 2015-07-12
    • 1970-01-01
    • 2015-12-30
    • 2015-05-30
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    相关资源
    最近更新 更多