Art*_*hur 4 python qt python3 matplotlib tkinter
我正在尝试$ ipython3 --pylab
在 Ubuntu 14.04 上的 Python 3 中使用 pylab(即)。无论我使用 Tkinter 还是 Qt4 后端,我都遇到了同样的错误。
AttributeError: 'FontManager' object has no attribute 'ttf_lookup_cache'
Run Code Online (Sandbox Code Playgroud)
然而,这个相同的基本绘图例程 ( plt.plot([1,2,3,4])
) 在 Python 2 pylab 中工作。
据我所知,我已经安装了必要的依赖项(注意,对于 Python 2 和 Python 3):
sudo apt-get install python-numpy python-scipy python-matplotlib
sudo apt-get install python3-numpy python3-scipy python3-matplotlib
sudo apt-get install python-tk python3-tk
sudo apt-get install libqt4gui libqt4core python-qt4 python3-qt4
Run Code Online (Sandbox Code Playgroud)
下面提供了完整的追溯。这是 Tkinter:
$ ipython3 --matplotlib tk
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
Type "copyright", "credits" or "license" for more information.
IPython 1.2.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import matplotlib.pyplot as plt
In [2]: plt.plot([1,2,3,4])
Out[2]: [<matplotlib.lines.Line2D at 0x7f1496dc9c50>]
In [3]: Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.4/tkinter/__init__.py", line 1490, in __call__
return self.func(*args)
File "/usr/lib/python3.4/tkinter/__init__.py", line 535, in callit
func(*args)
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 363, in idle_draw
self.draw()
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 348, in draw
FigureCanvasAgg.draw(self)
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py", line 451, in draw
self.figure.draw(self.renderer)
File "/usr/lib/python3/dist-packages/matplotlib/artist.py", line 56, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/figure.py", line 1035, in draw
func(*args)
File "/usr/lib/python3/dist-packages/matplotlib/artist.py", line 56, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/axes.py", line 2088, in draw
a.draw(renderer)
File "/usr/lib/python3/dist-packages/matplotlib/artist.py", line 56, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/axis.py", line 1094, in draw
renderer)
File "/usr/lib/python3/dist-packages/matplotlib/axis.py", line 1043, in _get_tick_bboxes
extent = tick.label1.get_window_extent(renderer)
File "/usr/lib/python3/dist-packages/matplotlib/text.py", line 755, in get_window_extent
bbox, info, descent = self._get_layout(self._renderer)
File "/usr/lib/python3/dist-packages/matplotlib/text.py", line 321, in _get_layout
ismath=False)
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py", line 214, in get_text_width_height_descent
font = self._get_agg_font(prop)
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py", line 258, in _get_agg_font
fname = findfont(prop)
File "/usr/lib/python3/dist-packages/matplotlib/font_manager.py", line 1362, in findfont
font = fontManager.findfont(prop, **kw)
File "/usr/lib/python3/dist-packages/matplotlib/font_manager.py", line 1202, in findfont
font_cache = self.ttf_lookup_cache
AttributeError: 'FontManager' object has no attribute 'ttf_lookup_cache'
Run Code Online (Sandbox Code Playgroud)
这是 Qt/Qt4:
$ ipython3 --matplotlib qt
WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
Type "copyright", "credits" or "license" for more information.
IPython 1.2.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import matplotlib.pyplot as plt
In [2]: plt.plot([1,2,3,4])
Out[2]: [<matplotlib.lines.Line2D at 0x7f0f840947f0>]
In [3]: Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_qt4.py", line 374, in idle_draw
self.draw()
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_qt4agg.py", line 154, in draw
FigureCanvasAgg.draw(self)
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py", line 451, in draw
self.figure.draw(self.renderer)
File "/usr/lib/python3/dist-packages/matplotlib/artist.py", line 56, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/figure.py", line 1035, in draw
func(*args)
File "/usr/lib/python3/dist-packages/matplotlib/artist.py", line 56, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/axes.py", line 2088, in draw
a.draw(renderer)
File "/usr/lib/python3/dist-packages/matplotlib/artist.py", line 56, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/axis.py", line 1094, in draw
renderer)
File "/usr/lib/python3/dist-packages/matplotlib/axis.py", line 1043, in _get_tick_bboxes
extent = tick.label1.get_window_extent(renderer)
File "/usr/lib/python3/dist-packages/matplotlib/text.py", line 755, in get_window_extent
bbox, info, descent = self._get_layout(self._renderer)
File "/usr/lib/python3/dist-packages/matplotlib/text.py", line 321, in _get_layout
ismath=False)
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py", line 214, in get_text_width_height_descent
font = self._get_agg_font(prop)
File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py", line 258, in _get_agg_font
fname = findfont(prop)
File "/usr/lib/python3/dist-packages/matplotlib/font_manager.py", line 1362, in findfont
font = fontManager.findfont(prop, **kw)
File "/usr/lib/python3/dist-packages/matplotlib/font_manager.py", line 1202, in findfont
font_cache = self.ttf_lookup_cache
AttributeError: 'FontManager' object has no attribute 'ttf_lookup_cache'
If you suspect this is an IPython bug, please report it at:
https://github.com/ipython/ipython/issues
or send an email to the mailing list at ipython-dev@scipy.org
You can print a more detailed traceback right now with "%tb", or use "%debug"
to interactively debug it.
Extra-detailed tracebacks for bug-reporting purposes can be enabled via:
%config Application.verbose_crash=True
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,都会出现绘图窗口。在 Tkinter 的情况下,情节是空白的(空的),但使用 Qt4 我确实看到了正确的结果——而且错误仍然会触发。同样,这适用于 Python 2.7 中的任一后端。我错过了什么?
我能够通过删除我的 matplotlib 字体缓存(Python 3 和 Python 2 字体缓存)来解决这个问题,例如,
rm /home/arthur/.cache/matplotlib/fontList*.cache
Run Code Online (Sandbox Code Playgroud)
我现在可以使用以下任何其他环境初始化而不会出错:
ipython3 --pylab
ipython3 --matplotlib tk
ipython3 --matplotlib qt4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4878 次 |
最近记录: |