Python Py2Exe:DLL 加载失败

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3782117/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 12:43:07  来源:igfitidea点击:

Py2Exe: DLL load failed

pythonpy2exe

提问by Niv

When trying to use py2exe to convert a simple Python game I made into exe format, it gave me the following error:

尝试使用py2exe将我制作的简单Python游戏转换为exe格式时,出现以下错误:

Traceback (most recent call last):
  File "C:\Users\Tali\Desktopexe.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.

I searched the web for about an hour, tried changing things in my program. Nothing works. Although my program uses the "random" library, I haven't seen a case in which it caused this kind of problem.

我在网上搜索了大约一个小时,尝试更改程序中的内容。什么都行不通。尽管我的程序使用了“随机”库,但我还没有看到导致此类问题的案例。

The install script:

安装脚本:

from distutils.core import setup
import py2exe

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

Yes, both the scripts are in the same folder (Desktop). If it matters, I'm running on Windows Vista with Python 2.7

是的,两个脚本都在同一个文件夹中(桌面)。如果重要的话,我正在使用 Python 2.7 在 Windows Vista 上运行

Thank you all very much in advance.

非常感谢大家。

回答by inspectorG4dget

From your comments, I see that you are doing this in the command prompt:

从您的评论中,我看到您在命令提示符中执行此操作:

setup.py py2exe 

from the py2exe tutorial's third step, you should be doing this instead (in the command promt):

py2exe 教程第三步开始,您应该这样做(在命令提示符中):

python setup.py py2exe

A second look at the comments on the original question shows that this suggestion has already been made. +1 to joaquin to for this.

再次查看对原始问题的评论表明已经提出了这个建议。+1 给华金为此。

To try to answer your question again: Joaquin also mentioned that this might be a path issue. Rather than trying to fix that, you might want to consider the easier option of copying your python files into C:\Python. Then in the command prompt:

再次尝试回答您的问题:Joaquin 还提到这可能是路径问题。与其尝试修复该问题,不如考虑将 Python 文件复制到 C:\Python 中的更简单选项。然后在命令提示符中:

cd C:\Python
python setup.py py2exe

This has always worked for me

这一直对我有用

Hope this helps

希望这可以帮助

回答by Zimm3r

You can deal with py2exe and the headaches, I tried doing this, even when I had it right, it would error, though I did find the excellent python program gui2exe, this makes it extremely easy to make an exe (or any of the other supported formats).

您可以处理 py2exe 和头痛问题,我尝试这样做,即使我做对了,它也会出错,尽管我确实找到了出色的 Python 程序 gui2exe,这使得制作 exe(或任何其他支持的格式)。

Gui2exe: http://code.google.com/p/gui2exe/downloads/detail?name=GUI2Exe_0.5.0.zip

Gui2exe:http: //code.google.com/p/gui2exe/downloads/detail?name=GUI2Exe_0.5.0.zip

Examples: http://code.google.com/p/gui2exe/wiki/GUI2ExeExamples

示例:http: //code.google.com/p/gui2exe/wiki/GUI2ExeExamples

回答by Victor Ionescu

Try installing the Microsoft Visual C++ 2008 Redistributable Package (x86): http://www.microsoft.com/downloads/en/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en

尝试安装 Microsoft Visual C++ 2008 Redistributable Package (x86):http: //www.microsoft.com/downloads/en/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en

回答by xiao-yu

I had exact the same problem.

我有完全相同的问题。

Since I have windows 7 64bit, I downloaded py2exe-0.6.9.win64-py2.6.amd64.exe, which I suppose to be the 64bit version of py2exe. but it did not work, and I had the same error.

由于我有windows 7 64位,我下载了py2exe-0.6.9.win64-py2.6.amd64.exe,我猜应该是py2exe的64位版本。但它没有用,我也有同样的错误。

I changed to py2exe-0.6.9.win32-py2.6.exe, and it worked fine.

我改成py2exe-0.6.9.win32-py2.6.exe,运行正常。

I guess you have to match the 32bit or 64bit with the python installation instead of the windows itself.

我猜你必须将 32 位或 64 位与 python 安装相匹配,而不是 Windows 本身。

by the way, "setup.py py2exe" or "python setup.py py2exe" really does not matter, if you instructed windows to open *.py with python during the python installation.

顺便说一句,“setup.py py2exe”或“python setup.py py2exe”真的无关紧要,如果您在安装python时指示windows用python打开*.py。

回答by katero

I met the same problem and I searched and I came here . I tried the way prompt by xiao-yu but I didn't work. So I found this from http://www.py2exe.org/index.cgi/Tutorial#Step52: 5.2.1. Bundling the C runtime DLL

我遇到了同样的问题,我进行了搜索,然后来到了这里。我试过小宇提示的方式,但没有奏效。所以我从http://www.py2exe.org/index.cgi/Tutorial#Step52 中找到了这个: 5.2.1。捆绑 C 运行时 DLL

If you do have the rights to redistribute MSVCR90.dll, there should be a copy of it in your Visual Studio install, under VC\redist\x86\Microsoft.VC90.CRT. Since Visual Studio 2008, you can't just copy this DLL file - you also need the manifest file that you'll find there. The redist.txt file states that you must distribute all three dlls and the unmodified manifest file and it is a violation of the license agreement to distribute only one of the dlls without the others (though py2exe only needs MSVCR90.dll.) The pertinent passage from the redist.txt file is as follows:-----------------------

如果您确实有权重新分发 MSVCR90.dll,则应在 Visual Studio 安装中的 VC\redist\x86\Microsoft.VC90.CRT 下有一份它的副本。从 Visual Studio 2008 开始,您不能只复制这个 DLL 文件 - 您还需要在那里找到的清单文件。redist.txt 文件声明您必须分发所有三个 dll 和未修改的清单文件,并且仅分发其中一个 dll 而没有分发其他 dll 是违反许可协议的(尽管 py2exe 只需要 MSVCR90.dll。)相关段落从 redist.txt 文件如下:----------------------

so ,try it.

所以,试试吧。

回答by Carl

It seems the problem can be solved by downloading the correct py2exe installer for your platform and version.

似乎可以通过为您的平台和版本下载正确的 py2exe 安装程序来解决问题。

I had the same problem here too. I was running on Windows 7 64 bit and had installed Python 2.7. My problem had to do with the fact that I installed py2exe-0.6.9.win32-py2.7.exe and the installer was not able to find python, even though it found the installation folder. Running python setup.py py2exeat this stage gave me the exact same errors you're seeing.

我在这里也遇到了同样的问题。我在 Windows 7 64 位上运行并安装了 Python 2.7。我的问题与我安装了 py2exe-0.6.9.win32-py2.7.exe 并且安装程序无法找到 python 的事实有关,即使它找到了安装文件夹。python setup.py py2exe在这个阶段运行给了我你看到的完全相同的错误。

I then downloaded py2exe-0.6.9.win64-py2.7.amd64.exe from this pageand installed it. The installation went off without a hitch and python setup.py py2exegame me lots of console output, created the build and dist folders and the expected executable.

然后我从这个页面下载了 py2exe-0.6.9.win64-py2.7.amd64.exe并安装了它。安装顺利进行,python setup.py py2exe给我带来了很多控制台输出,创建了 build 和 dist 文件夹以及预期的可执行文件。

回答by Bilal Mahmood

I solved this problem by downloading "Microsoft Visual C++ Compiler for Python 2.7" http://www.microsoft.com/en-pk/download/details.aspx?id=44266

我通过下载“Microsoft Visual C++ Compiler for Python 2.7”解决了这个问题 http://www.microsoft.com/en-pk/download/details.aspx?id=44266

回答by Usman Mushtaq

I was facing the same problem, I was using Python 2.7 (32 bits) on Windows 7 (64 bit) with py2exe-0.6.9.win64-py2.7.amd64.exe, so the problem was I was using 32 bit Python and 64 bit py2exe. If you don't know whether Python package you are using is 32 bit or 64 bit, then run idle.bat from C:\Python27\Lib\idlelib\.

我遇到了同样的问题,我在 Windows 7(64 位)上使用 Python 2.7(32 位)py2exe-0.6.9.win64-py2.7.amd64.exe,所以问题是我使用的是 32 位 Python 和 64 位 py2exe。如果你不知道你使用的 Python 包是 32 位还是 64 位,那么运行 idle.bat 从C:\Python27\Lib\idlelib\.

The first line in python window prompt will show you the python package details.

python 窗口提示中的第一行将显示 python 包的详细信息。

I uninstalled the py2exe-0.6.9.win64-py2.7.exeby running "pip uninstall py2exe"and installed py2exe-0.6.9.win64-py2.7.amd64.exewhich worked for me.

py2exe-0.6.9.win64-py2.7.exe通过运行"pip uninstall py2exe"和安装卸载了py2exe-0.6.9.win64-py2.7.amd64.exe它,这对我有用。

回答by guettli

py2exe looks very dated. The last release is four years old (from 2014, today is 2018)

py2exe 看起来很陈旧。最后一次发布已经四年了(从 2014 年开始,今天是 2018 年)

The latest entry on the homepage part "news" is from 2008 (ten years old).

主页部分“新闻”的最新条目是2008年(十年前)。

I guess it is better to use a different tool if you have errors with py2exe today.

我想如果您今天在使用 py2exe 时遇到错误,最好使用不同的工具。