也许这是设置正确的sys.path
从shell vs web服务器运行时的问题。
更多关于sys.path
这里:sys module。
我建议在导入之前在sys.path中尝试添加~/httpdocs/python-libraries/feedparser-4.1/
(最好使用完整路径,不使用~/
)。
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"
您也可以熟悉traceback模块。它在标准库中,它在那里,所以你可以使用它。所以,你的异常处理的代码可能是这样的:
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"
有关回溯模块的真棒提示。谢谢! – Pranab 2009-11-24 01:13:45