Matplotlib и Pylab не работают в Python CGI - PullRequest
0 голосов
/ 05 июня 2010

Matplotlib и Pylab не работают в Python CGI. Но та же комбинация работает в оболочке Python. Ниже приведен код:

#!C:/Python26/python
import cgi
import cgitb
import sys
import os
cgitb.enable()

# set HOME environment variable to a directory the httpd server can write to
os.environ[ 'HOME' ] = '/tmp/'

import matplotlib
# chose a non-GUI backend
matplotlib.use( 'Agg' )

import pylab

#Deals with inputing data into python from the html form
form = cgi.FieldStorage()

# construct your plot
pylab.plot([1,2,3])

print "Content-Type: image/png\n"

# save the plot as a png and output directly to webserver
pylab.savefig( "test.png")

Ответы [ 3 ]

1 голос
/ 05 июня 2010

Put

import cgitb ; cgitb.enable()

вверху вашего скрипта, запустите его и покажите нам трассировку. Без этого единственная помощь, которую мы можем оказать, - молиться за вас.

Отслеживание должно быть достаточно четким, без дополнительной помощи.

Кроме того, Python cgi чрезвычайно медленный и не совсем то, что вы можете использовать для чего-то нетривиального.

0 голосов
/ 20 апреля 2012

Кажется, это ошибка в модуле Python ctypes. Нужно прокомментировать строку

#CFUNCTYPE(c_int)(lambda: None).

в $HOME/lib/python2.7/ctypes/__init__.py.

Никто не понимает, что это значит, это обходной путь для Windows, который создает проблемы в Linus cgi, см. Python ctypes MemoryError в процессе fcgi из библиотеки PIL .

0 голосов
/ 07 июня 2010

Ваш код немного неполон. В таком виде вы записываете сюжет в файл на жестком диске сервера. Вы не возвращаете его в браузер. Один из способов сделать это - сохранить график в объект StringIO, а затем отправить его обратно.

import cStringIO
imgData = cStringIO.StringIO()
pylab.savefig(imgData, format='png')

# rewind the data
imgData.seek(0)

print "Content-Type: image/png\n"
print

print imgData.read()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...