在python 2.6上加载win32file.pyd的问题

时间:2009-09-17 15:33:41

标签: py2exe pywin32 python-2.6

即使是使用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作为目标机器

更新

  • 我可以在创建它的Windows 7上运行捆绑的程序,但我无法在XP机器上运行它。
  • 抛出错误的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而不会出错。

1 个答案:

答案 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"]}}
     )