py2exe:由于DLL,编译的Python Windows应用程序将无法运行

时间:2009-07-17 21:01:14

标签: python wxpython py2exe

我会承认我对Python很新,我真的不知道我在做什么。最近我使用Python 2.6.2和wxPython 2.8创建了一个非常小的Windows应用程序。而且效果很好;我对它的正常工作表现非常满意。通常我的意思是当我直接通过Python解释器调用它时,如下所示:

> python myapp.py

但是,我想更进一步,实际上将其编译成一个独立的可执行文件。所以我从使用py2exe的wxPython wiki中跟踪these instructions。起初它在命令行中给了我错误,说MSVCR90.dll丢失了。然后我将MSVCR90.dll复制到我的Python \ DLLs文件夹中。这首先看起来像修复它,因为它成功地完成了它需要做的事情。它确实快速警告,程序依赖于某些DLL文件,我可能需要也可能不需要分发它们。

所以我导航到py2exe创建的dist文件夹并尝试运行我的可执行文件。但是试图打开它只会弹出一个错误对话框,上面写着:

This application failed to start because MSVCR90.dll was not found.
Re-installing the application may fix this problem.

所以我继续将MSVCR90.dll再次复制到这个dist文件夹中。但那并没有成功。然后我将其复制到WINDOWS \ system32目录中。那也没做到。我需要做些什么来使这个东西起作用?

2 个答案:

答案 0 :(得分:8)

您不能只复制msvcr * .dll - 它们需要使用并排程序集的规则进行设置。您可以通过安装Sam指出的可再发行软件包来完成此操作,或者只要您遵守规则,就可以将它们放在可执行文件旁边。

请参阅“将Visual C ++库DLL作为私有程序集部署”部分:How to Deploy using XCopy了解详细信息,但基本上您的应用程序如下所示:

c:\My App\MyApp.exe
c:\My App\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest
c:\My App\Microsoft.VC90.CRT\msvcr90.dll

这样做的一个好处是非管理员用户可以使用您的应用程序(我相信您需要成为管理员才能通过可再发行的安装程序安装运行时)。并且不需要任何安装程序 - 您只需将文件复制到PC上即可。

答案 1 :(得分:2)

我相信安装Microsoft C++ Redistributable Package会正确安装你需要的DLL。