py2exe抛出ImportError:DLL加载失败:找不到指定的模块

时间:2011-04-01 14:34:54

标签: python py2exe

我似乎无法使py2exe正常工作。我在cmd中运行了“python setup.py py2exe”,以及“python setup.py install”......当我尝试运行我的可执行文件时,我一遍又一遍地得到同样的错误:

enter image description here

一周之后,我开始变得非常沮丧,我希望今天能够解决这个问题。

我正在使用Python 2.7和py2exe v0.6.9。 64位Windows7

4 个答案:

答案 0 :(得分:6)

最后,我可以为一个快乐的人而死。经过一个多星期的痛苦解决这个问题,我发现问题是我必须从SourceForge下载64位版本的py2exe。他们在顶部的“获取最新版本”链接是针对Python 2.5的,这是非常误导的,因为我认为它至少会使用它支持的最新版本的PYTHON,我相信这是我的版本, Python 2.7.1。

我必须进入“浏览所有文件”部分并手动导航到v0.6.9,然后选择适当的版本。

我现在可以通过运行“C:\ Python27 \ setup.py py2exe”创建一个可执行文件。

感谢所有人的帮助/回复。

答案 1 :(得分:3)

该错误中最重要的一行是最后两行 -

导入py2exe_util

ImportError:DLL加载失败:找不到指定的模块。

这意味着首先没有完全安装py2exe。尝试重新安装它。

答案 2 :(得分:2)

你需要一个与你的python安装架构相匹配的py2exe版本。 如果你有一个32位python安装,你需要一个win32 py2exe安装程序。 如果你有一个x64 python安装,你需要一个win64 py2exe安装程序。

就我而言,我使用的是64位机器,安装了32位python。 Source Forge'最新'链接提供了win64版本的py2exe(因为它检测到我的机器类型)。但它不起作用,我不断收到以下错误:

ImportError: DLL load failed with error code 193

我需要回到Source Forge并“浏览所有文件”以找到win32版本。

答案 3 :(得分:0)

我不确定我的问题是否与OP相同,但是由于我在寻找问题的解决方案时找到了该线程,因此我将添加发现的内容。

我的问题是在64位计算机上构建32位程序。该exe在其他64位计算机上工作正常,但引发 DLL加载失败:在其他32位计算机上找不到指定的模块错误。

我最终弄清楚的是py2exe包含了Windows DLL,这些Windows DLL不应包含在软件包中。删除这些DLL后,错误消失了。

py2exe具有显式排除dll的选项。以下是对我有用的代码片段:

setup(
    ...
    options={
        'bdist_esky': {
            'freezer_module': 'py2exe',
            'freezer_options': {
                'dll_excludes': [
                    'CRYPT32.dll',
                    'IPHLPAPI.DLL',
                    'MPR.dll',
                    'MSWSOCK.dll',
                    'PSAPI.DLL',
                    'WTSAPI32.dll',
                ],
            },
            ...
)