docker/matplotlib: RuntimeError: Invalid DISPLAY 变量
Posted
技术标签:
【中文标题】docker/matplotlib: RuntimeError: Invalid DISPLAY 变量【英文标题】:docker/matplotlib: RuntimeError: Invalid DISPLAY variable 【发布时间】:2016-12-11 02:29:30 【问题描述】:我尝试了很多解决方法,都没有成功。
我试过echo $DISPLAY
不工作
错误信息:
环境:
请求方法:GET 请求 URL: http://10.231.xx.xx:8000/upload/
追溯:
文件 “/opt/conda/lib/python2.7/site-packages/django/core/handlers/base.py” 在 get_response 149. response = self.process_exception_by_middleware(e, request)
文件 “/opt/conda/lib/python2.7/site-packages/django/core/handlers/base.py” 在 get_response 147. response = Wrapped_callback(request, *callback_args, **callback_kwargs)
msa_result 中的文件“/code/fileUpload_app/views.py” 174. result1 = generate_hist(db, **processing_dict)
generate_hist 中的文件“/code/fileUpload_app/post_processing.py” 182. fig1 = plt.figure()
文件“/opt/conda/lib/python2.7/site-packages/matplotlib/pyplot.py”在 数字 527.**kwargs)
文件 “/opt/conda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py” 在 new_figure_manager 46. return new_figure_manager_given_figure(num, thisFig)
文件 “/opt/conda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py” 在 new_figure_manager_given_figure 53. canvas = FigureCanvasQTAgg(图)
文件 “/opt/conda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py” 在 初始化 76. FigureCanvasQT.init(self, figure)
文件 “/opt/conda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py” 在 初始化 68. _create_qApp()
文件 “/opt/conda/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py” 在 _create_qApp 138. raise RuntimeError('无效的显示变量')
异常类型:RuntimeError at /upload/msa_result/1/ 异常值: 无效的 DISPLAY 变量
我正在使用 docker 来托管我的网络项目。
我的代码包括这些:
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
def generate_hist(db, **kwargs):
fig1 = plt.figure()
hist = mat2[0, 0:pin_num]
fig1 = plt.hist(hist)
plt.savefig("fileUpload_app/static/img/result/hist.jpg")
【问题讨论】:
“echo $DISPLAY”不起作用是什么意思? 【参考方案1】:从这里:RuntimeError: Invalid DISPLAY variable
import matplotlib.pyplot as plt
plt.switch_backend('agg')
我在远程机器上使用了这个,有 ssh & screen,没有 X 转发。
【讨论】:
【参考方案2】:原因是我import seaborn
在我import matplotlib
之前。这导致 matplotlib 没有在正确的位置运行。
【讨论】:
以上是关于docker/matplotlib: RuntimeError: Invalid DISPLAY 变量的主要内容,如果未能解决你的问题,请参考以下文章