Matplotlib и Pylab не работят в Python CGI

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

person Nimmy    schedule 05.06.2010    source източник
comment
Някакъв код? Или трябва да познаем какво правите погрешно?   -  person Ignacio Vazquez-Abrams    schedule 05.06.2010


Отговори (3)


Вашият код е малко непълен. В настоящия момент вие записвате сюжета във файл на твърдия диск на сървъра. Не го връщате в браузъра. Един от методите за това е да запишете диаграмата в 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()
person Mark    schedule 07.06.2010

Слагам

import cgitb ; cgitb.enable()

в горната част на вашия скрипт, стартирайте го и ни покажете проследяването. Без това единствената помощ, която можем да предоставим, е да се молим за вас.

Обратното проследяване трябва да е достатъчно ясно без допълнителна помощ наистина.

Настрана, Python cgi е изключително бавен и всъщност не е нещо, което можете да използвате за нещо нетривиално.

person Noufal Ibrahim    schedule 05.06.2010

Изглежда, че това е грешка в Python ctypes модул. Човек трябва да коментира репликата

#CFUNCTYPE(c_int)(lambda: None).

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

Никой не разбира какво означава това, това е заобиколно решение за Windows, което създава проблеми в Linus cgi, вижте Python ctypes MemoryError в fcgi процес от PIL библиотека.

person Yaroslav Nikitenko    schedule 20.04.2012