我在服務(wù)器中運行一個簡單的python腳本:import matplotlib.pyplot as pltimport numpy as npx = np.random.randn(60)y = np.random.randn(60)plt.scatter(x, y, s=20)out_png = 'path/to/store/out_file.png'plt.savefig(out_png, dpi=150)我嘗試python example.py在已安裝matplotlib 1.5.1的服務(wù)器中使用該命令,但失敗并顯示以下錯誤:Traceback (most recent call last): File "example.py", line 7, in <module> plt.scatter(x, y, s=20) File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3241, in scatter ax = gca() File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 928, in gca return gcf().gca(**kwargs) File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 578, in gcf return figure() File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/pyplot.py", line 527, in figure**kwargs) File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 84, in new_figure_manager return new_figure_manager_given_figure(num, figure) File "/home/USER/.virtualenvs/nnet/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 92, in new_figure_manager_given_figure window = Tk.Tk() File "/usr/local/lib/python2.7/lib-tk/Tkinter.py", line 1810, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)_tkinter.TclError: no display name and no $DISPLAY environment variable這是怎么回事
3 回答

一只甜甜圈
TA貢獻1836條經(jīng)驗 獲得超5個贊
您可以通過在.py腳本的非常開頭添加這兩行來解決此問題。
import matplotlib
matplotlib.use('Agg')
PS:如果在源代碼的開頭沒有添加這兩行,則錯誤仍然存在。

桃花長相依
TA貢獻1860條經(jīng)驗 獲得超8個贊
為了加總答案,我在所需腳本的開頭使用了它。因此它可以在不同的環(huán)境下平穩(wěn)運行。
import os
import matplotlib as mpl
if os.environ.get('DISPLAY','') == '':
print('no display found. Using non-interactive Agg backend')
mpl.use('Agg')
import matplotlib.pyplot as plt
因為我不希望它總是使用'Agg'后端,所以僅當它通過Travis CI時才使用。
添加回答
舉報
0/150
提交
取消