我正在尝试使用py2exe(Windows 7中的WinPython 3.4.4)从脚本创建.exe文件。在这个脚本中,我使用了matplotlib包的不同后端(版本1.5.2)。我的所有尝试都导致错误:
... name = self._resolve_name(name,package,level) 文件" M:\ Python \ WinPython-32bit-3.4.4.4Qt5b1 \ python-3.4.4 \ lib \ site-packages \ py2exe \ mf3.py",第213行,在_resolve_name中 提出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中运行脚本效果很好。使用py2exe时的错误消息现在更改为:
文件" M:\ Python \ WinPython-32bit-3.4.4.4Qt5b1 \ python-3.4.4 \ lib \ site-packages \ py2exe \ hooks.py",第291行, GETATTR self .__ finder.safe_import_hook(重命名,来电=自我) RuntimeError:超出最大递归深度
答案 0 :(得分:0)
我似乎用错误的方式使用py2exe。
首先需要有一个要转换为exe的sunning python脚本,比如你称之为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'])