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

Pio*_*pla 7 pywin32 py2exe 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.
Run Code Online (Sandbox Code Playgroud)

该脚本如下所示:

import win32file
print "Hello world!"
Run Code Online (Sandbox Code Playgroud)

这是setup.py:

from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'])
Run Code Online (Sandbox Code Playgroud)

你之前有类似的问题吗?

版本:

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')
    
    Run Code Online (Sandbox Code Playgroud)

我的开发框(Windows 7)上面的行正确运行,而在测试框(Windows XP)上返回错误.

**更新2:**

当我使用imp.load_dynamic加载win32file表单python安装时,我可以为dist文件夹重新加载win32file.pyd而不会出错.

Pio*_*pla 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"]}}
     )
Run Code Online (Sandbox Code Playgroud)