Pra*_*nab 1 python browser import feedparser
我使用SSH通过SSH安装了feedparser
$ python setup.py install --home=~/httpdocs/python-libraries/feedparser-4.1/
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我似乎没有权限正确运行'python setup.py install'
我在'test.py'中运行以下python代码.
print "Content-type: text/html\n\n"
try:
import feedparser
except:
print "Cannot import feedparser.\n"
Run Code Online (Sandbox Code Playgroud)
我通过SSH登录时代码运行正常.但是当我在浏览器中查看它时,它会打印出来
Cannot import feedparser.
有任何想法吗?
也许这是sys.path从shell vs 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"
Run Code Online (Sandbox Code Playgroud)
哦,顺便说一句,这httpdocs似乎是您的Web服务器的文档根.将图书馆放在那里是最好的主意吗?(好吧,除非你有唯一可以使用的地方......)
编辑(作为一般说明)
最好避免使用如下语法:
try:
something
except:
print "error"
Run Code Online (Sandbox Code Playgroud)
这绝对不会让您了解您遇到的实际错误.您可以假设,如果您尝试导入模块,那么您可以ImportError在那里,但无法确定.
这使调试成为一个真正的地狱.去过那里,完成了,由于这个已经失去了几十个小时:)
只要您可以,请尝试一次捕获一种异常类型.所以:
try:
import SomeModule
except ImportError:
print "SomeModule can't be imported"
Run Code Online (Sandbox Code Playgroud)
您还可以熟悉回溯模块.它在标准库中,它就在那里你可以使用它.所以,你的异常处理代码可能是这样的:
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"
Run Code Online (Sandbox Code Playgroud)