我有一个使用matplotlib的Python 2.6代码,并希望得到一个有效的exe。我在完成这项工作时遇到了问题:
最初我因丢失MSCVP90.dll而出错,但是我下载并将.dll解压缩到工作目录中,并且该错误消失了。
我有一些关于缺少tkagg模块的错误,但我将其添加到异常并编辑了matplotlibrc文件以默认为WXAgg,然后就消失了。
exe正常运行,但在代码的末尾应该显示一个情节,而不是。情节是这个节目的主要目标,所以最好有这个。
只需运行python代码就可以了解情节。
任何人都可以提供任何建议或见解吗?
这是我的setup.py:
from distutils.core import setup
import py2exe
import matplotlib
matplotlib.use('wxagg') # overrule configuration
import pylab
setup(
console=['test1.py'],
options={
'py2exe': {
'excludes': ['_gtkagg', '_tkagg', 'backend_tkagg'],
}
},
data_files=matplotlib.get_py2exe_datafiles(),
)
提前致谢!
好吧,我使用了pyinstaller并将matplotlibrc文件恢复到原来的状态,其中TkAgg是默认设置,并且一切都在我的计算机上运行,但是当我尝试在另一台计算机上运行它时,情节仍然没有出现... < / p>
我可以使用pyinstaller从一个非常简单的matplotlib代码编译exe,如:
from pylab import *
t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plot(t, s, linewidth=1.0)
show()
但是,当我将该exe文件带到另一台计算机时,它不起作用。
还有其他人有过类似的问题吗?有任何想法吗? 感谢
答案 0 :(得分:1)
如果可执行文件在您的计算机上运行但在另一台计算机上无法运行,则最可能的问题是缺少py2exe因许可证问题而无法打包的一个或多个所需的dll。
这些dll经常是
gdiplus.dll
msvcp90.dll
在exe工作的计算机中查找它们并将它们复制到发生故障的计算机上。 如果exe仍然不起作用,请检查其他dll。 Py2exe给出了二进制依赖项列表:
*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.
OLEAUT32.dll - C:\Windows\system32\OLEAUT32.dll
USER32.dll - C:\Windows\system32\USER32.dll
gdiplus.dll - gdiplus.dll
SHELL32.dll - C:\Windows\system32\SHELL32.dll
ole32.dll - C:\Windows\system32\ole32.dll
RPCRT4.dll - C:\Windows\system32\RPCRT4.dll
WSOCK32.dll - C:\Windows\system32\WSOCK32.dll
WINMM.dll - C:\Windows\system32\WINMM.dll
ADVAPI32.dll - C:\Windows\system32\ADVAPI32.dll
msvcrt.dll - C:\Windows\system32\msvcrt.dll
WS2_32.dll - C:\Windows\system32\WS2_32.dll
WINSPOOL.DRV - C:\Windows\system32\WINSPOOL.DRV
GDI32.dll - C:\Windows\system32\GDI32.dll
IMM32.dll - C:\Windows\system32\IMM32.dll
MSVCP90.dll - C:\Python26\programas\test\MSVCP90.dll
KERNEL32.dll - C:\Windows\system32\KERNEL32.dll
ntdll.dll - C:\Windows\system32\ntdll.dll
COMCTL32.dll - C:\Windows\system32\COMCTL32.dll
COMDLG32.dll - C:\Windows\system32\COMDLG32.dll
VERSION.dll - C:\Windows\system32\VERSION.dll
C:\Python26\programas\test>
最后,我成功地使用py2exe获得了一个功能性matplotlib程序可执行文件。我只需要在setup.py中添加'includes'
并在matplotlib.rc中将WXAgg设置为后端(使用Tk我遇到了你描述的相同问题......)。为了工作,我必须在原始的matplotlib.rc中设置WXAgg(在matplotlib / mpl-data文件夹中)。这是一个py2exe导入(不是用户的matplotlib配置目录中的那个)。确保检查dist文件夹中的.rc文件。
from distutils.core import setup
import py2exe
import matplotlib
setup(
console=['test1.py'],
options={
'py2exe': {
'excludes': ['Tkconstants','Tkinter', 'tcl'],
'includes': ['matplotlib.backends.backend_wxagg'],
}
},
data_files=matplotlib.get_py2exe_datafiles(),
)
答案 1 :(得分:0)
今天我失去了一天的工作,所以......
解决方案是包括&#34; FileDialog&#34;模块明确,因为&#34;六&#34;模块使用它。具体来说,我通过加入six
,dateutil
,FileDialog
,matplotlib
,pylab
,matplotlib.backends.backend_tkagg
等来解决了我的问题。
祝你好运!