代码之家  ›  专栏  ›  技术社区  ›  Piotr Czapla

在python 2.6上加载win32file.pyd时出现问题

  •  7
  • Piotr Czapla  · 技术社区  · 15 年前

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

    更新:

    • 我可以在创建它的Windows7上运行捆绑程序,但不能在XP机器上运行它。
    • win32file.pyc中引发错误的部分如下:

      >>> imp.load_dynamic('win32file', r'C:\test\setup-test\src\dist\win32file.pyd')
      

    “我的开发人员”框(Windows7)上的这一行在“测试框”(WindowsXP)上运行正常,但返回错误。

    **更新2:**

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

    1 回复  |  直到 13 年前
        1
  •  9
  •   Piotr Czapla    15 年前

    其作用是删除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"]}}
         )