我需要将我的 Python 应用程序、它的依赖项和 Python 打包到一个 MSI 安装程序中。最终结果最好是:
- Python 安装在标准位置
- 包及其依赖项安装在单独的目录中(可能是站点包)
- 安装目录应包含未压缩的 Python,并且不需要独立的可执行文件
我使用PyInstaller(svn 版本)来创建我的程序的独立版本,其中包括 Python 和所有依赖项。让它正常工作并包含所有东西需要一点点摆弄(py2exe和其他类似程序也是如此,请参阅this question),但它工作得很好。
然后,您需要创建一个安装程序。NSIS非常适用,而且是免费的,但它创建的是 .exe 文件而不是 .msi。如果不需要 .msi,我强烈推荐它。否则,请查看此问题的答案以获取其他选项。
我的公司使用免费的 InnoSetup 工具。这是一个中等复杂的程序,对于构建 Windows 安装程序具有很大的灵活性。但是,我相信它会创建 .exe 而不是 .msi 文件。InnoSetup 不是特定于 python 的,但我们已经为我们的一个产品创建了一个安装程序,该安装程序将 python 连同依赖项安装到用户在安装时指定的位置。
我在使用pyinstaller的依赖项和自定义文件夹结构方面获得了更好的结果,它可以让您找到并指定隐藏的导入和挂钩,以获取更大的依赖项,如 numpy 和 scipy。不过,还有一个 PITA。
py2exe将生成带有 python 的 windows 可执行文件。
py2exe 是最好的方法。使用起来有点像 PITA,但最终效果非常好。
好的,我以前使用过 py2exe,它运行良好,除了一件事......它只适用于可执行的 Windows 机器。然后我了解了 Jython,它将 python 脚本转换为 .Jar 文件。如您所知,它可以从任何安装了 Java(“到您的最新运行版本”)的机器上执行。这很棒,因为 unix、windows 和 ios(大多数时候)都运行 java。这意味着它可以从以下所有机器执行。只要他们运行Java。无需“py2mac + py2exe + freeze”即可在所有操作系统上运行。只是 Jython
有关它如何工作以及如何使用它的更多信息,请单击此处。
http://www.jython.org/