使用matplotlib的py2exe超过了相对导入错误/最大递归深度



我正试图使用py2exe(Windows 7中的WinPython 3.4.4)从脚本创建一个.exe文件。在这个脚本中,我使用了matplotlib包(1.5.2版本)的不同后端

。。。name=自我_resolve_name(名称、包、级别)文件"M:\Python\WinPython-32bit-3.4.4.4Qt5b1\Python-3.44\lib\site packages\py2exe\mf3.py",第213行,在_resolve_name中raise ValueError("尝试的顶级包之外的相对导入")ValueError:试图在顶级包之外进行相对导入

对于与matplotlib位于同一目录级别的其他包,没有问题。我阅读了所有关于这个主题的帖子,但还没有找到解决方案(包括pyinstaller)。有人能帮我吗?

"setup.py":

from distutils.core import setup
import py2exe
import matplotlib
setup(console=['skript.py'],
options={
"py2exe":{
"packages":   ['matplotlib.pyplot','matplotlib.backends.backend_pdf'], # List of all the modules you want to import
}
},
data_files=matplotlib.get_py2exe_datafiles(),        
)

更新我现在安装了matplotlib 2.0.0版本。我用导入脚本中的包

from matplotlib import pyplot, dates
from matplotlib.backends.backend_pdf import PdfPages
from matplotlib.ticker import MaxNLocator

在spyder中运行脚本效果良好。使用py2xe时的错误消息现在更改为:

文件"M:\Python\WinPython-32bit-3.4.4.4Qt5b1\Python-3.4.4\lib\site-packages\py2exe\hook.py",第291行,在getattrself中__finder.safe_import_hook(已重命名,caller=self)运行时错误:超过的最大递归深度

我觉得你用py2exe的方式不对。

您首先需要有一个sunning python脚本,您想将其转换为exe,比如称之为script01.py

然后在script01.py中进行

import matplotlib.pyplot as plt

然后您编写一个setup.py脚本,以最简单的形式将sctipy01.py转换为exe:

from distutils.core import setup
import py2exe
setup(console=['script01.py'])

最新更新