该应用程序在我的开发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']}}
但它不起作用。有任何想法吗?提前谢谢!
答案 0 :(得分:2)
解决方案是从项目目录中删除系统DLL。当我将psutil添加到我的应用程序时,py2exe为我的项目添加了许多系统DLL。它在我和其他一些计算机上正常工作,但在另一台计算机上失败了。从项目中删除C:\ Windows \ System32中可用的.dll文件解决了该问题。
最后在我的情况下,解决方案是添加:
'dll_excludes': [ "IPHLPAPI.DLL", "NSI.dll", "WINNSI.DLL", "WTSAPI32.dll"]
进入setup.py文件中的py2exe选项。