Change matplotlib backend in Python virtualenv
我使用Python v2.7.12在pyenv上安装了
1 | pip install matplotlib |
没有问题。问题是这很简单
1 2 3 | import matplotlib.pyplot as plt plt.scatter([], []) plt.show() |
脚本无法生成绘图窗口。我在virtualenv中看到的后端使用:
1 2 | import matplotlib print matplotlib.rcParams['backend'] |
是
在SO中已经有几个类似的问题,我已经尝试了所有这些问题中给出的解决方案。
Matplotlib plt.show()未显示图形
尝试使用--system-site-packages选项创建virtualenv。不行。
如何确保Python 3 virtualenv中的matplotlib使用TkAgg后端?
安装
Matplotlib不显示virtualenv中的图形
按照本答案中给出的安装说明,什么都不做(另一个答案涉及使用
matplotlib绘图窗口不会出现
这里给出的解决方案是"安装GUI库(Tkinter,GTK,QT4,PySide,Wx之一)"。我不知道该怎么做。此外,如果我使用:
1 2 | import matplotlib.rcsetup as rcsetup print(rcsetup.all_backends) |
我明白了:
1 | [u'GTK', u'GTKAgg', u'GTKCairo', u'MacOSX', u'Qt4Agg', u'Qt5Agg', u'TkAgg', u'WX', u'WXAgg', u'CocoaAgg', u'GTK3Cairo', u'GTK3Agg', u'WebAgg', u'nbAgg', u'agg', u'cairo', u'emf', u'gdk', u'pdf', u'pgf', u'ps', u'svg', u'template'] |
这意味着所有这些后端都可以在我的系统中使用(?)。
尽管我打电话给pyplot.show(),matplotlib也没有显示我的图画
我的
1 | backend : Qt4Agg |
我不知道如何让virtualenv意识到这一点?
一些解决方案涉及创建
如果我尝试设置后端:
1 2 | import matplotlib matplotlib.use('GTKAgg') |
我得到
使用:
1 2 | import matplotlib matplotlib.use('Qt4Agg') |
(或
使用:
1 2 | import matplotlib matplotlib.use('TkAgg') |
结果为
使用:
1 2 | import matplotlib matplotlib.use('GTKCairo') |
结果
如何使virtualenv使用与我的系统使用相同的后端?
您可以考虑通过运行以下命令在Python 2 virtualenv中将后端更改为
1 2 | sudo apt install python-tk # install Python 2 bindings for Tk pip --no-cache-dir install -U --force-reinstall matplotlib # reinstall matplotlib |
要确认后端确实是
1 | python -c 'import matplotlib as mpl; print(mpl.get_backend())' |
你应该看到