这个问题之前有人问过,在 这里,也在 这里。但是,解决方案并没有解决我的问题。
最初的错误是,当我尝试 import matplotlib.pyplot
时,我得到:
追溯(最近调用最后):文件“”,第 1 行,在文件“/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py”,第 114 行,在 _backend_mod,new_figure_manager, draw_if_interactive, _show = pylab_setup() 文件“/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/ init .py”,第 32 行,在 pylab_setup globals(),locals(),[backend_name ],0) 文件“/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py”,第 24 行,来自 matplotlib.backends import _macosx RuntimeError:Python 未安装为框架。如果 Python 未作为框架安装,Mac OS X 后端将无法正常运行。有关在 Mac OS X 上将 Python 安装为框架的更多信息,请参阅 Python 文档。请重新安装 Python 作为框架,或尝试其他后端之一。如果您在虚拟环境中使用 Matplotlib,请参阅 Matplotlib 常见问题解答中的“在虚拟环境中使用 Matplotlib”
我按照解决方案添加了一个 ~/.matplotlib/matplotlibrc
文件,代码为: backend: TkAgg
。这样做之后,我的错误更改为:
/Users/XX/anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib 正在使用 fc-list 构建字体缓存。这可能需要一点时间。 warnings.warn(‘Matplotlib 正在使用 fc-list 构建字体缓存。这可能需要一点时间。’) objc[25120]: TKApplication 类在 /Users/XX/anaconda/lib/libtk8.5.dylib 和/System/Library/Frameworks/Tk.framework/Versions/8.5/Tk.将使用两者之一。哪一个是未定义的。 objc[25120]:类 TKMenu 在 /Users/XX/anaconda/lib/libtk8.5.dylib 和 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk 中实现。将使用两者之一。哪一个是未定义的。 objc[25120]:类 TKContentView 在 /Users/XX/anaconda/lib/libtk8.5.dylib 和 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk 中实现。将使用两者之一。哪一个是未定义的。 objc[25120]:类 TKWindow 在 /Users/XX/anaconda/lib/libtk8.5.dylib 和 /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk 中实现。将使用两者之一。哪一个是未定义的。
我不知道如何解决这个问题。我没有使用虚拟机。
PS:我发现通过添加:
导入 matplotlib
matplotlib.use(‘TkAgg’)
在 import matplotlib.pyplot
之前,它似乎有效。但是每次都添加这两行代码很烦人……
这是怎么回事,我该如何解决?
原文由 KDD 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 virtualenv 中运行我的脚本。 Python 版本是 3.5。
添加一行:
在文件中:
这解决了问题。
如果你想知道更多关于为什么添加这个可以解决问题,你可以阅读 自定义 matplotlib 的后端。 TkAgg 解决了这个问题,因为它依赖于 Tkinter。