2016-03-15 2 views
1

Je sais que le problème similaire résolvait à ce sujet:Erreur avec l'exécution du script CGI - répertoire inscriptible pour matplotlib

Setting Matplotlib MPLCONFIGDIR: consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data

, mais j'ai problème avec l'exécution du script CGI. J'utilise HTML fomular pour entrer des données, et sur la base de ces données, le modèle OLS par statsmodels et le résultat veulent imprimer en tant que page HTML. Si j'exécuter le script python il me donne cette erreur:

http://textuploader.com/5nrhf

Fondamentalement, j'obtiens l'erreur - Failed to create /var/www/.matplotlib; consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data

I rouge sur la définition du MPLCONFIGDIR dans le code avant d'importer matplotlib et Ake que le répertoire dispose des autorisations de telle sorte qu'il peut être écrit par l'application comme ceci:

import os 
os.environ['MPLCONFIGDIR'] = "/home/lab/website/graph" 
import matplotlib 

ou

import os 
import tempfile 
os.environ['MPLCONFIGDIR'] =tempfile.mkdtemp() 
import matplotlib 

mais je ne pas module matplotlib d'importation dans mon script, que CGI, statsmodels.api, MySQLdb et numpy

Si vous voulez, voici mon script CGI - http://textuploader.com/5nrx4

Je ne savez pas comment, si je dois définir des permissions pour le dossier matplotlib, je peux écrire en tant qu'exécution du script CGI ou en quelque sorte mettre le dossier matplotlib sur un chemin différent (accessible en écriture pour moi). BTW Je ne possède pas de serveur, il est juste le serveur de l'école.

Répondre

0

Vous n'êtes pas explicitement importez matplotlib, mais les importations statsmodels.apipandas, et à son tour pandas les importations matplotlib (vous pouvez voir tous tht la lecture à travers votre retraçage). Par conséquent, vous devez toujours disposer d'un MPLCONFIGDIR en écriture pour exécuter votre script. Vous avez déjà la réponse comment faire cela, mais au cas où vous voulez en savoir plus à ce sujet, il existe une documentation here sur la configuration des variables d'environnement matplotlib.


Il devrait être suffisant pour ajouter ceci dans votre fichier avant d'importer statsmodels.api:

import os 
os.environ['MPLCONFIGDIR'] = "/home/lab/website/graph" 
+0

Eh bien peut-être question stupide, mais je ne suis pas Wery experinced avec apache ou python, tout débutant. Je dois mettre ceci: 'import os' ' os.environ ['MPLCONFIGDIR'] = "/ some/mon/chemin" ' ' importer matplotlib' dans le fichier pandas qui importe matplotlib? Aussi j'ai regardé sur le lien, que vous avez écrit et quelque chose de similaire que j'ai fait dans windows (set environnement variable), quand je commence à travailler avec python et localhost. Mais je me connecte au serveur via WinSCP et utilise 'sh shell'. J'essaie 'call/bin/sh' de lancer shell mais me donne une erreur et pour être honnête je ne sais pas si je le fais bien ou dois aller à l'administrateur du serveur. – koaxko

+0

Voir ma modification. Vous n'avez pas besoin d'éditer le fichier pandas – tom