如何用py2exe打包psutil?

时间:2013-10-21 06:08:01

标签: python py2exe

该应用程序在我的开发win8环境中运行良好,但是当它与py2exe一起打包并在生产机器上运行时会抛出异常:

“程序入口点RtlIdnToAscii无法位于动态链接库ntdll.dll中”

日志文件的详细内容是

Traceback (most recent call last):
  File "DataviewerBackupRestorer.py", line 6, in <module>
  File "RestorController.pyc", line 7, in <module>
  File "psutil\__init__.pyc", line 136, in <module>
  File "psutil\_psmswindows.pyc", line 14, in <module>
  File "_psutil_mswindows.pyc", line 12, in <module>
  File "_psutil_mswindows.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.

在打包过程中似乎缺少psutil所需的dll。我试图用

添加py2exe选项
py2exe_options = {"py2exe":{"includes":['decimal', '_mssql', 'uuid', 'psutil', '_psutil_mswindows']}}

但它不起作用。有任何想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

解决方案是从项目目录中删除系统DLL。当我将psutil添加到我的应用程序时,py2exe为我的项目添加了许多系统DLL。它在我和其他一些计算机上正常工作,但在另一台计算机上失败了。从项目中删除C:\ Windows \ System32中可用的.dll文件解决了该问题。

最后在我的情况下,解决方案是添加:

            'dll_excludes': [ "IPHLPAPI.DLL", "NSI.dll",  "WINNSI.DLL",  "WTSAPI32.dll"]

进入setup.py文件中的py2exe选项。