如何捆绑包含依赖项的Python应用程序?

时间:2008-09-20 01:39:49

标签: python tkinter packaging

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

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

7 个答案:

答案 0 :(得分:25)

关于 how to make a python into an executable这个问题的重复。

归结为:

Windows上的

py2exe,Linux上的Freeze和 Mac上的py2app

答案 1 :(得分:17)

我使用PyInstaller(svn版本)创建一个包含Python和所有依赖项的程序的独立版本。要让它正常运行并包含所有内容(如py2exe和其他类似程序,请参阅this question)需要一些小小的功能,但它的效果非常好。

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

答案 2 :(得分:4)

我的公司使用免费的InnoSetup工具。这是一个中等复杂的程序,具有很大的灵活性来构建Windows的安装程序。我相信它会创建.exe而不是.msi文件。 InnoSetup不是特定于python的,但是我们为我们的一个产品创建了一个安装程序,它将python和依赖项安装到用户在安装时指定的位置。

答案 3 :(得分:3)

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

答案 4 :(得分:3)

我使用pyinstaller对依赖项和自定义文件夹结构有了更好的结果,它可以让你找到并指定隐藏的导入和钩子,用于更大的依赖项,比如numpy和scipy。不过也是PITA。

答案 5 :(得分:1)

py2exe是执行此操作的最佳方式。这是一个使用的PITA,但最终结果非常好。

答案 6 :(得分:1)

好的,之前我使用过py2exe,除了一件事以外它完美运行......它只适用于可执行的Windows机器。然后我学习了Jython,它将python脚本转换为.Jar文件。如您所知,可以从任何安装了Java("到最新运行版本")的计算机上执行。这是伟大的因为unix,windows和ios(大多数时候)运行java。这意味着它可以从以下所有机器执行。只要他们运行Java。不需要" py2mac + py2exe + freeze"只是在所有操作系统上运行。只是Jython

有关其工作原理以及如何使用的更多信息,请单击此处。
http://www.jython.org/