서브 프로세스로 실행되는 스크립트 (apache 서버에서 파이썬 cgi 스크립트에 의해 실행 됨)에서 실행되는 스크립트에서 matplotlib로 플롯 (즉 파일 작성)하고 싶지만 어떻게 든 플롯이 내가 사용하는 백엔드에 따라 서버가 생성되거나 서버가 충돌합니다. 나는 "agg"를 사용해야한다고 생각하고, 그 경우 플롯이 생성되지만 서버가 충돌합니다 (내부 서버 오류). 여기에 로그는 다음과 같습니다Matplotlib 서브 프로세스/백엔드 문제
AH01215: /usr/lib/pymodules/python2.7/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display, referer: http://localhost/
AH01215: warnings.warn(str(e), _gtk.Warning), referer: http://localhost/
AH01215: /usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_gtk.py:49: GtkWarning: IA__gdk_cursor_new_for_display: assertion `GDK_IS_DISPLAY (display)' failed, referer: http://localhost/
AH01215: cursors.MOVE : gdk.Cursor(gdk.FLEUR),, referer: http://localhost/
malformed header from script 'submit.cgi': Bad header: ['/home/user/..., referer: http://localhost/
는 CGI 스크립트는 순간에 서브 프로세스의 출력에 의존 넣은 사람은 아니다, 그래서 정말 경고 나쁜 헤더를하지 않습니다 (그리고 그런 문제가있을 때하지 않습니다 하위 프로세스 시작).
import string
import sys
import os
from math import *
import tempfile
os.environ['MPLCONFIGDIR'] = tempfile.mkdtemp()
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as matplot
from matplotlib import mpl
지금까지 난 단지하기 matplotlib와하지 하위 프로세스로 오히려 단순한 플롯을했다, 그래서 나는 정말 당신의 도움을 주셔서 감사합니다 : 플롯 스크립트의 시작은 다음과 같습니다.
PS : 나는 우분투를 11.04 및 아파치
처럼, 널 (null)을 dev에 출력을 리디렉션! – user1448268
대단하다 - 봉사하게되어 기쁩니다! –