Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Py2Exe和MatPlotLib:Plot-won';不出现_Matplotlib_Py2exe - Fatal编程技术网

Py2Exe和MatPlotLib:Plot-won';不出现

Py2Exe和MatPlotLib:Plot-won';不出现,matplotlib,py2exe,Matplotlib,Py2exe,我有一个使用matplotlib的Python 2.6代码,我想从中获得一个可运行的exe。我在完成这项工作时遇到问题: 起初,我因为缺少MSCVP90.dll而收到一个错误,但我下载了它并将.dll解压到工作目录中,错误消失了 关于丢失的tkagg模块,我有一些错误,但我将其添加到异常中,并将matplotlibrc文件编辑为默认为WXAgg,然后就消失了 exe正常运行,但在代码末尾,它应该显示一个绘图,而不是。情节是这个节目的主要目标,所以有这个就好了 只要运行python代码,就可以很好

我有一个使用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是默认值,所有内容都在我的计算机上运行,但当我尝试在另一台计算机上运行它时,绘图仍然不会出现

我可以使用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带到另一台计算机上时,它就不工作了

还有其他人有类似的问题吗?有什么想法吗?
谢谢

如果可执行文件在您的计算机上运行,但在另一台计算机上不工作,最可能的问题是缺少一个或多个所需的DLL,而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'
,并将WXAgg设置为matplotlib.rc中的后端(使用Tk,我遇到了与您描述的相同的问题…)。为了让它工作,我必须在原始matplotlib.rc(在matplotlib/mpl数据文件夹中)中设置WXAgg。这是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(),

)

今天我失去了一天的工作,所以

解决方案是明确地包含“FileDialog”模块,因为“six”模块使用它。具体来说,我解决了我的问题,包括
six
dateutil
FileDialog
matplotlib
pylab
matplotlib.backends.backend\u tkagg
和其他


祝你好运

我从来没有在
py2exe
matplotlib
上交过好运。在我看来,
pyinstaller
做得更好,而且使用起来更简单(特别是对于需要matplotlib的东西)。谢谢我将matplotlib.rc中的后端设置为WXAgg,并使用setup.py代码,它可以正常工作。非常感谢。@user1070048如果答案有用,您应该将其作为最佳答案进行投票/选择。好的,这样做之后,我想将所有内容编译为一个exe,但使用“bundle\u files”:1和zipfile=None仍然保留dist文件夹中的mpl数据文件夹。有没有办法通过把它放在library.zip或其他什么东西中来摆脱这个问题?我还没有足够的“经验”来投票,但确实是这样useful@Mike您在您的区域中获得matplotlib文件夹。您不能将其嵌入py2exe可执行文件中。如果您只想分发一个文件,您可以将所有内容打包在一起(您只需再加2分即可更新答案;-))