【问题标题】:Compile python files + all dependecies + intepreter into one java\.net (dll or exe) file?将python文件+所有依赖项+解释器编译成一个java\.net(dll或exe)文件?
【发布时间】:2019-06-30 15:21:47
【问题描述】:

我有几个 python 文件,它们依赖于第三方库,比如 pyaudio。那么有没有一种方法可以将包括 python 解释器本身在内的所有内容编译到一个 .jar\dll 文件中,以便在 java\android 或 xamarin\.net 核心中使用它们,而无需每次都实际安装 python + pip install ? 也可以选择 - 编译成 c\c++?

【问题讨论】:

    标签: java python .net dependencies


    【解决方案1】:

    您可以使用 PyInstaller 创建可执行文件。 使用这个命令:

    pyinstaller --onefile <your_script>.py

    https://medium.com/dreamcatcher-its-blog/making-an-stand-alone-executable-from-a-python-script-using-pyinstaller-d1df9170e263

    【讨论】:

      【解决方案2】:

      我不知道如何编译成 C,但对于编译可执行文件,一般来说,您可以使用 pyinstaller、cx_freeze 或其他一些不太常见的模块来创建一个包含所有 .dll 文件的可执行文件夹来运行程序。我只有 cx_freeze 的经验,所以我会在这里讨论。如果您的目标是让最终用户在下载时只显示 1 个“文件”,您需要使用安装程序。半引用 cx_freeze 文档:https://cx-freeze.readthedocs.io/en/latest/faq.html

      cx_Freeze 不支持构建单个文件 exe,其中应用程序的所有库都嵌入在一个可执行文件中。 [有一些模块可以做到这一点,但据我了解,他们使用“黑客”可以让它们被防病毒软件标记。]

      您可以使用 IExpress 将构建目录从 cx_Freeze 压缩到一个自解压存档中:一个 exe 将您的应用程序解压缩到一个临时目录并运行它。 IExpress 是一个包含在 Windows 中的实用程序,用于制作安装程序,但如果您告诉它在解压后运行 cx_Freeze 构建的 exe,它同样可以正常工作。

      或者,您可以使用 7zip 创建自解压存档。这比使用 IExpress 稍微复杂一些,但可能会提供更大的灵活性,并允许您仅使用开源工具构建应用程序。

      或者,您可以使用python setup.py bdist_msi 编译以创建单个.msi 文件,让用户选择他们想要安装程序的位置。在一天结束时,用户仍将拥有一个包含所有.dll 文件和诸如此类的目录,但他们可以选择将这些东西放在硬盘驱动器上的哪个位置!我认为这是我安装的大多数应用程序使用的方法。这是假设您也在 Windows 上开发,如果不是,您应该在帖子中包含您的操作系统。

      【讨论】:

      • 感谢您的全面解答!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2014-05-07
      相关资源
      最近更新 更多