我正试图使用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'])