我需要将我的Python应用程序、其依赖项和Python本身打包成一个单独的MSI安装程序,以便分发给用户。最终结果应该是:
- Python被安装在标准位置
- 软件包及其依赖项被安装在单独的目录中(可能是site-packages)
- 安装目录应包含未压缩的Python,不需要独立的可执行文件
我需要将我的Python应用程序、其依赖项和Python本身打包成一个单独的MSI安装程序,以便分发给用户。最终结果应该是:
这个问题有点类似于关于如何将Python程序制作成可执行文件的这个问题:how to make a python into an executable。
总结起来就是:
我使用 PyInstaller(svn版本)创建了一个独立的程序版本,其中包括Python和所有依赖项。需要一些调试才能使其正确运行并包含所有内容(py2exe和其他类似的程序也是如此,请参见这个问题),但之后它的表现非常好。
接下来您需要创建一个安装程序。NSIS非常适合此操作,而且还是免费的,但它只创建.exe文件而不是.msi文件。如果没有必要使用.msi文件,我强烈建议使用它。否则,请查看这个问题的答案以获得其他选项。
我的公司使用免费的InnoSetup工具。它是一个相对复杂的程序,可以为Windows构建安装程序并提供大量灵活性。我认为它创建的是.exe文件而不是.msi文件。虽然InnoSetup不是专门针对Python的,但我们已经为其中一个产品创建了一个安装程序,在安装时安装Python及其依赖项,并将其安装到用户指定的位置。
好的,我以前使用过py2exe,它完美地工作,除了一件事... 它只能在可执行的Windows机器上运行。然后我了解到Jython可以将Python脚本转换为.Jar文件。正如您所知,任何安装了Java(“最新运行版本”)的机器都可以执行它。这很棒,因为Unix、Windows和iOS(大多数情况下)都运行Java。这意味着它可以在以下所有机器上运行。只要它们运行Java即可。不需要“py2mac + py2exe + freeze”才能在所有操作系统上运行。只需要Jython。
有关其工作原理以及如何使用它的更多信息,请单击此处。
http://www.jython.org/
请注意,
jython
仅支持Python 2(截至撰写本文时)。
py2exe是实现这一目标的最佳方式。虽然使用起来有点麻烦,但最终结果非常好。