如何捆绑包括依赖关系的Python应用程序?

我需要将我的python应用程序,它的依赖项和python打包成一个MSI安装程序。 最终的结果应该是:

  • Python安装在标准位置
  • 包及其依赖关系安装在一个单独的目录(可能是站点包)
  • 安装目录应该包含未压缩的python,并且不需要独立的可执行文件

有关如何使python变成可执行文件的这个问题的一种重复。

归结为:

Windows上的py2exe ,Linux上的Freeze和Mac上的py2app 。

我使用PyInstaller (svn版本)来创build我的程序的独立版本,其中包括Python和所有依赖项。 它需要一点小小的工作才能正常工作,包括所有东西(就像py2exe和其他类似的程序一样,看到这个问题 ),但它的工作得很好。

然后您需要创build一个安装程序。 NSIS非常适合这种情况,并且是免费的,但它会创build.exe文件而不是.msi。 如果.msi没有必要,我强烈推荐它。 否则,请查看其他选项的这个问题的答案。

我的公司使用免费的InnoSetup工具。 这是一个适度复杂的程序,为构buildWindows安装程序提供了大量的灵活性。 我相信它创build.exe而不是.msi文件,但是。 InnoSetup并不是Python特有的,但是我们已经为我们的一个产品创build了一个安装程序,这些安装程序在安装时将python和依赖项安装到用户指定的位置。

我已经有更好的结果与依赖和自定义文件夹结构使用pyinstaller ,它可以让你find并指定隐藏的导入和钩子更大的依赖像numpy和scipy。 不过也是一个PITA。

py2exe是最好的方法来做到这一点。 这是一个PITA使用,但最终的结果非常好。

py2exe将使python捆绑在Windows可执行文件。

好的,我已经使用py2exe之前,除了一件事情,它完美的作品…它只适用于可执行的Windows机器。 然后我了解了将python脚本转换为.Jar文件的Jython。 正如你所知,它可以从安装有Java的任何机器(“到你最近运行的版本”)执行。 这是伟大的,因为无论是UNIX,Windows和iOS(大部分时间)运行Java。 这意味着它的所有以下机器的可执行文件。 只要他们运行Java。 不需要“py2mac + py2exe + freeze”就可以在所有操作系统上运行。 只是Jython

有关如何使用的更多信息,请点击这里。
http://www.jython.org/