Py2Exe:DLL加载失败

18 投票
9 回答
30440 浏览
提问于 2025-04-16 04:31

我在用py2exe把我做的一个简单Python游戏转换成exe格式的时候,遇到了一个错误:

Traceback (most recent call last):
  File "C:\Users\Tali\Desktop\2exe.py", line 4, in <module>
    setup(console=['test.py'])
  File "C:\Python\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 243, in run
    self._run()
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 305, in _run
    dlls = self.find_dlls(extensions)
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 389, in find_dlls

    self.dll_excludes)
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 1021, in find_dep
endend_dlls
    import py2exe_util
ImportError: DLL load failed: %1 is not a valid Win32 application.

我在网上搜索了大约一个小时,尝试修改我的程序,但都没有解决问题。虽然我的程序使用了“random”这个库,但我没见过它会引起这样的错误。

这是安装脚本:

from distutils.core import setup
import py2exe

setup(console=['test.py'])

是的,这两个脚本在同一个文件夹里(桌面)。如果有关系的话,我是在Windows Vista上用Python 2.7运行的。

非常感谢大家的帮助。

9 个回答

3

看起来这个问题可以通过下载适合你操作系统和版本的正确py2exe安装程序来解决。

我之前也遇到过同样的问题。我当时使用的是64位的Windows 7,并且安装了Python 2.7。我的问题是我安装了py2exe-0.6.9.win32-py2.7.exe,但安装程序找不到Python,尽管它找到了安装文件夹。在这个阶段运行python setup.py py2exe时,出现了和你一样的错误。

然后我从这个页面下载了py2exe-0.6.9.win64-py2.7.amd64.exe并安装。安装过程非常顺利,运行python setup.py py2exe时得到了很多控制台输出,创建了build和dist文件夹,还生成了预期的可执行文件。

3

我遇到了同样的问题,搜索了一下,最后来到了这里。我尝试了小宇推荐的方法,但没成功。所以我在这个网站上找到了这个信息:http://www.py2exe.org/index.cgi/Tutorial#Step52

5.2.1. 打包C运行时DLL

如果你有权利重新分发MSVCR90.dll文件,那么在你的Visual Studio安装目录下,应该能找到它,路径是VC\redist\x86\Microsoft.VC90.CRT。从Visual Studio 2008开始,你不能仅仅复制这个DLL文件,你还需要在那个目录下找到的清单文件。redist.txt文件说明你必须一起分发这三个DLL文件和未修改的清单文件,单独分发其中一个DLL而不带其他文件是违反许可协议的(不过py2exe只需要MSVCR90.dll)。redist.txt文件中的相关内容如下:-----------------------

所以,试试看吧。

33

我遇到了完全一样的问题。

因为我用的是64位的Windows 7,所以我下载了py2exe-0.6.9.win64-py2.6.amd64.exe,我以为这是py2exe的64位版本。但它没有用,我还是遇到了同样的错误。

后来我换成了py2exe-0.6.9.win32-py2.6.exe,这个就正常工作了。

我猜想,你需要根据Python的安装版本来选择32位或64位,而不是根据Windows的版本。

顺便说一下,"setup.py py2exe"和"python setup.py py2exe"其实没什么区别,只要你在安装Python时把*.py文件设置为用Python打开就可以了。

撰写回答