docker / matplotlib:RuntimeError:无效的DISPLAY变量

时间:2016-08-04 19:52:11

标签: python django matplotlib docker

我尝试了很多解决方法,但都没有。

我试过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)

     

File" /code/fileUpload_app/views.py"在msa_result中     174. result1 = generate_hist(db,** processing_dict)

     

File" /code/fileUpload_app/post_processing.py"在generate_hist中     182. fig1 = plt.figure()

     

File" /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.返回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"   在 init     76. FigureCanvasQT。 init (self,figure)

     

文件   " /opt/conda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py"   在 init     68. _create_qApp()

     

文件   " /opt/conda/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py"   在_create_qApp中     138.引发RuntimeError('无效的DISPLAY变量')

     

异常类型:/ upload / msa_result / 1 / Exception值的RuntimeError:   无效的DISPLAY变量

我正在使用泊坞窗来托管我的网络项目。

我的代码包括以下内容:

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")

2 个答案:

答案 0 :(得分:0)

原因是在import seaborn之前我import matplotlib。这导致matplotlib无法在正确的位置运行。

答案 1 :(得分:0)

从这里开始:RuntimeError: Invalid DISPLAY variable

import matplotlib.pyplot as plt
plt.switch_backend('agg')

我在远程机器上使用它,使用ssh&屏幕,没有X转发。