使用matplotlib

时间:2017-01-20 08:58:38

标签: python matplotlib python-3.4 py2exe

我正在尝试使用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:超出最大递归深度

1 个答案:

答案 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'])