当我使用最基本的“配置”py2exe
打包最小的Python 2.7.1 / wxPython程序(Hello World)并在原始的Windows 7 x32虚拟机上运行时,保存“Microsoft Visual C ++ 2008 Redistributable Package(x86)“已安装,我收到了无用的错误:
Z:\>z:\wxhello\wxhello.exe
Traceback (most recent call last):
File "wxhello.py", line 1, in <module>
File "wx\__init__.pyc", line 45, in <module>
File "wx\_core.pyc", line 4, in <module>
File "wx\_core_.pyc", line 12, in <module>
File "wx\_core_.pyc", line 10, in __load
ImportError: DLL load failed: The system cannot find the file specified.
运行py2exe末尾列出的所有DLL都存在于gdiplus.dll
的目标VM上,我手动复制到dist路径中的一些wxPython库。
文字和Tkinter
“Hello World”“都可以正常使用。
怎么了?我可以获得一些更有用的调试信息吗?
使用cx_Freeze
的相同过程会产生稍微不同的错误:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
File "wxhello.py", line 1, in <module>
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\__init__.py", line 45, in <module>
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 4, in <module>
File "ExtensionLoader_wx__core_.py", line 12, in <module>
ImportError: DLL load failed: The system cannot find the file specified.
cx_Freeze
生成的程序运行失败是通过运行本地驱动器(在VM上)而非网络共享来解决的。我没有测试是否也修复了py2exe
'二进制'。
答案 0 :(得分:2)
使用cx_Freeze并快乐
答案 1 :(得分:1)
环境:
OS: Windows-XP-5.1.2600-SP3
Python: 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]
wxPython: 2.8.12.1 (msw-unicode)
cx_Freeze: 4.2.3
来源:
import wx
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.button = wx.Button(self.panel, label="Hello WX!")
self.sizer = wx.BoxSizer()
self.sizer.Add(self.button)
self.panel.SetSizerAndFit(self.sizer)
self.Show()
app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
命令:
c:\Python27\Scripts\cxfreeze.bat hellowx.py
运行没有错误,并在dist目录输出中生成这些文件:
bz2.pyd
gdiplus.dll
hellowx.exe
python27.dll
unicodedata.pyd
wx._controls_.pyd
wx._core_.pyd
wx._gdi_.pyd
wx._misc_.pyd
wx._windows_.pyd
wxbase28uh_net_vc.dll
wxbase28uh_vc.dll
wxmsw28uh_adv_vc.dll
wxmsw28uh_core_vc.dll
wxmsw28uh_html_vc.dll
这在Windows 7 Ultimate, Version 6.1, Build 7600
虚拟机上运行没有问题。
我希望这可以帮助您识别您的设置或丢失的DLL可能遇到的任何问题。
答案 2 :(得分:0)
您可以使用http://www.dependencywalker.com/找出缺少的DLL并手动添加它。