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 变量的主要内容,如果未能解决你的问题,请参考以下文章

启动Hive时报错

Java异常

Hadoop退出安全模式

[LintCode] Linked List Cycle

第一篇C#日志-ini读写

Java Day 11