Peut-être que c'est le problème avec la configuration correcte sys.path
lors de l'exécution de shell vs serveur Web.
En savoir plus sur sys.path
ici: sys module.
Je recommanderais d'essayer d'ajouter ~/httpdocs/python-libraries/feedparser-4.1/
(mieux en utilisant le chemin complet, sans ~/
) à votre sys.path avant l'importation.
import sys
sys.path.append('/home/user/httpdocs/python-libraries/feedparser-4.1/')
print "Content-type: text/html\n\n"
try:
import feedparser
except:
print "Cannot import feedparser.\n"
Oh, et par la manière, le httpdocs
semble comme une racine de documents pour votre serveur web. Est-ce la meilleure idée d'y mettre la bibliothèque? (Bien, à moins qu'il y est le seul endroit où vous pouvez utiliser ...)
modifier (comme une note générale)
Il est préférable d'éviter la syntaxe comme:
try:
something
except:
print "error"
Cela donne vous absolument aucune information sur l'erreur réelle que vous rencontrez. Vous pouvez supposer que si vous essayez d'importer un module, vous avez ImportError
, mais vous ne pouvez en être sûr.
Cela fait du débogage un véritable enfer. Été là, fait cela, ont perdu des dizaines d'heures à cause de cela :)
Chaque fois que vous le pouvez, essayez d'attraper un type d'exception à la fois. Alors:
try:
import SomeModule
except ImportError:
print "SomeModule can't be imported"
Vous pouvez également vous familiariser avec le module traceback. C'est dans la bibliothèque standard et c'est là que vous pouvez l'utiliser.Donc, votre code de gestion des exceptions pourrait être quelque chose comme ceci:
sys.path.append('/home/user/httpdocs/python-libraries/feedparser-4.1/')
try:
import feedparser
except ImportError:
print "Content-type: text/plain\n\n" # text/plain so we get the stacktrace printed well
import traceback
import sys
traceback.print_exc(sys.stdout) # default is sys.stderr, which is error log in case of web server running your script, we want it on standart output
sys.exit(1)
# here goes your code to execute when all is ok, including:
print "Content-type: text/html\n\n"
Astuce géniale à propos du module de retraçage. Merci! – Pranab