sys.path
也许这是从 shell 与从 Web 服务器运行时设置正确的问题。
更多关于sys.path
这里:sys 模块。
我建议在导入之前尝试将~/httpdocs/python-libraries/feedparser-4.1/
(最好使用完整路径,不带~/
)添加到您的 sys.path 中。
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"
哦,顺便说一下,这httpdocs
似乎是您的 Web 服务器的文档根目录。把图书馆放在那里是最好的主意吗?(好吧,除非有你唯一可以使用的地方......)
编辑(作为一般说明)
最好避免使用如下语法:
try:
something
except:
print "error"
这绝对不会为您提供有关您遇到的实际错误的信息。您可以假设如果您尝试导入一个模块,那么您已经ImportError
在那里,但不能确定。
这使调试成为真正的地狱。去过那里,这样做了,因此损失了几十个小时:)
只要有可能,尝试一次捕获一种异常类型。所以:
try:
import SomeModule
except ImportError:
print "SomeModule can't be imported"
您还可以熟悉回溯模块。它在标准库中,因此您可以使用它。因此,您的异常处理代码可能是这样的:
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"