部署Python程序的问题(与py2exe一起打包)

时间:2009-06-26 11:36:41

标签: python deployment wxpython multiprocessing py2exe

我遇到了一个问题:我在我的程序中使用了py2exe,它在我的计算机上运行。我用Inno Setup打包它(仍在我的计算机上工作),但是当我将它发送到另一台计算机时,我在尝试运行应用程序时遇到以下错误:“CreateProcess失败;代码14001”。该应用程序将无法运行。 (注意:我在我的程序中使用wxPython和多处理模块。) 我google了一下,发现用户应该安装一些MS可再发行的东西,但我不想让我的用户生活变得复杂。有解决方案吗?

版本:

Python 2.6.2c1, py2exe 0.6.9, Windows XP专业版

4 个答案:

答案 0 :(得分:3)

您需要在安装目录中包含msvcr90.dll,Microsoft.VC90.CRT.manifest和python.exe.manifest(重命名为[yourappname] .exe.manifest)。如果您使用“Just for me”选项安装Python,这些文件将位于系统的Python26目录中。

执行此操作的说明can be found here

不要忘记在主要功能中拨打multiprocessing.freeze_support(),否则在开始新流程时会遇到问题。

虽然其他人已经讨论过在您的安装包中包含MSVC运行时,但只需要分发包含所有文件的单个.zip文件时,上述解决方案就可以运行。当您不想要额外的复杂功能时,它可以避免创建单独的安装包。

答案 1 :(得分:1)

您应该可以将MS可再发行组件安装为InnoSetup安装程序的一部分。

答案 2 :(得分:1)

运行py2exe时,请仔细查看完成后的最终消息。它为您提供了程序所需的DLL列表,但py2exe不会自动捆绑。

列表中的许多内容在任何Windows安装上都可靠地可用,但是您应该手动将其捆绑到Inno安装程序中。只有在想要在较旧的Windows安装上部署时才需要一些例如赢得2000或更早。

答案 3 :(得分:0)

您可以将应用程序的运行时DLL作为“私有程序集”发布。这只是意味着将包含运行时DLL及其清单的特殊命名目录的副本放在可执行文件旁边。

请参阅my answer to this post