即使是使用 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 作为目标机器
更新:
>>> 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 没有错误。
最佳答案
解决办法是删除被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"]}}
)
关于py2exe - 在 python 2.6 上加载 win32file.pyd 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1439621/