问题与装载win32file.pyd Python的2.6
问题描述:
我不能让py2exe收拾即使正确使用win32file 我经常收到以下错误消息的简单脚本:问题与装载win32file.pyd Python的2.6
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'])
HAV你有过类似的问题吗?
版本:
的Python 2.6.2,py2exe 0.6.9,pywin32-214,Windows 7和Windows XP专业版作为目标机器
UPDATE:
- 我可以运行在我的Windows 7上创建的捆绑程序,但我无法在XP机器上运行它。
-
win32file.pyc的抛出错误看起来如下部分:
>>> imp.load_dynamic('win32file', r'C:\test\setup-test\src\dist\win32file.pyd')
上面我的dev的框(Windows 7)线路正常运行,而在测试框(Windows XP)的回报错误。
**更新2:**
当我使用imp.load_dynamic加载win32file形式蟒安装然后我可以重新加载为dist文件夹的win32file.pyd而不会出现错误。
答
解决方法是删除由py2exe被错误地复制到dist目录中的MSWSOCK.dll。
我已经使用procmon和listdll来检查什么是加载的win32file.pyd当导入是成功和什么DLL导入失败时加载。然后有我已经检查,如果他们正确加载DLL的列表即。来自dist文件夹的python dll和windows文件夹中的windows dll。
这里是工作正常
from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'],
options={'py2exe': {"dll_excludes": ["mswsock.dll", "MSWSOCK.dll"]}}
)
mswsock.dll是不是一个问题,我的setup.py,但POWRPROF.dll了。所以我的dll_excludes现在是[“mswsock.dll”,“POWRPROF.dll”]。基本上,py2exe不应该运送POWRPROF.dll,而是使用系统上可用的dll版本。 – Jim 2014-01-24 15:55:17
真的有效!谢谢 – 2014-03-08 10:19:02