Python 不显示打印:matplotlib.use()的正确使用

Python 不显示打印:matplotlib.use()的正确使用,python,matplotlib,Python,Matplotlib,我需要在没有显示器的系统上绘图。 如果我使用matplotlib.pyplot.plt天真地绘图,我会得到 raise RuntimeError('Invalid DISPLAY variable') 我发现matplotlib.use()可以在这个上下文中使用。 现在我有一个主文件: **main.py:** import my_module .... # do stuff **my_module.py:** import matplotlib matplotli

我需要在没有显示器的系统上绘图。 如果我使用matplotlib.pyplot.plt天真地绘图,我会得到

    raise RuntimeError('Invalid DISPLAY variable')
我发现
matplotlib.use()
可以在这个上下文中使用。 现在我有一个主文件:

 **main.py:**

 import my_module
 ....
 # do stuff

 **my_module.py:**

 import matplotlib
 matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or     pylab!
 import matplotlib.pyplot as plt    
 # do stuff
 plt.plot(data)
运行main.py时,我得到:

UserWarning: 
This call to matplotlib.use() has no effect because the backend has already
been chosen; matplotlib.use() must be called *before* pylab,     matplotlib.pyplot,
or matplotlib.backends is imported for the first time.
但对我来说,似乎是在导入
pyplot
之前调用它。后来我得到了这个运行时错误

File "[OMIT]/python2.7/site-packages/matplotlib    /backends/backend_qt5.py", line 144, in _create_qApp
raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variable
那么,更改matplotlib后端的正确方法是什么呢?我不需要显示器,但我需要能够使用plt存储图形。savefig

您需要

import matplotlib
matplotlib.use('Agg')
在新内核上,尤其是在导入
matplotlib.pyplot


我很好奇,也很高兴知道是否有办法清除/刷新ipython内核,而不必重新启动它;到目前为止,我的任务还没有成功。

最后,我解决了以下问题:

**main.py***
import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import my_module
由于
my_模块中的许多子导入使得无法识别pyplot第一次导入的位置。
我还做了:

import my_module
相反,我做得更早

from my_module import my_func

main.py
中是否还有其他可以导入
matplotlib
的内容?除了
我的\u模块
,您还导入其他模块吗?我刚更改了代码,让我的\u模块先导入。谢谢你的建议。如果不刷新内核,问题仍然存在刷新控制台后问题仍然存在。现在,第一次导入matplotlib是在main.py导入的第一个模块中完成的,应该可以了吧?应该可以了。也许你需要为你的问题创建一个新的答案,以便在这里得到正确的答案。将很快完成我正在尝试%reset(Anaconda,iPython)请让我知道。]%重置无效,正在尝试重新启动内核