即使是使用win32file的简单脚本,也无法使py2exe正确打包 我经常收到以下错误消息:
Traceback (most recent call last):
File "dependency_checker.py", line 1, in <module>
File "win32file.pyc", line 12, in <module>
File "win32file.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.
该脚本如下所示:
import win32file
print "Hello world!"
这是setup.py:
from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'])
你以前遇到过类似的问题吗?
版本:
Python 2.6.2,py2exe 0.6.9,pywin32-214,Windows 7和Windows XP Pro作为目标机器
更新
抛出错误的win32file.pyc部分如下所示:
>>> imp.load_dynamic('win32file', r'C:\test\setup-test\src\dist\win32file.pyd')
我的开发框(Windows 7)上面的行正确运行,而在测试框(Windows XP)上则返回错误。
**更新2:**
当我使用imp.load_dynamic加载win32file形式的python安装时,我可以为dist文件夹重新加载win32file.pyd而不会出错。
答案 0 :(得分:9)
原因是要删除py2exe错误复制到dist目录的MSWSOCK.dll。
我使用procmon和listdll来检查导入成功时win32file.pyd加载的内容以及导入失败时加载的dll。然后有我已经检查过的dll列表,如果它们被正确加载,即。来自dist文件夹的python dll和来自windows文件夹的windows dll。
这是正常运行的setup.py
from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'],
options={'py2exe': {"dll_excludes": ["mswsock.dll", "MSWSOCK.dll"]}}
)