python - 'import feedparser' 通过 SSH 工作,但在浏览器中时失败

标签 python browser feedparser import

我通过 SSH 安装了 feedparser,使用

$ python setup.py install --home=~/httpdocs/python-libraries/feedparser-4.1/

我这样做是因为我似乎没有正确运行“python setup.py install”的权限

我在“test.py”中运行以下 python 代码。

print "Content-type: text/html\n\n"
try:
    import feedparser
except:
    print "Cannot import feedparser.\n"

当我通过 SSH 登录时,代码运行良好。但是当我在浏览器中查看它时,它会打印

无法导入 feedparser。

有什么想法吗?

最佳答案

可能是在从 shell 与从 Web 服务器运行时设置正确的 sys.path 的问题。

更多关于 sys.path 的信息:sys module .

我建议尝试将 ~/httpdocs/python-libraries/feedparser-4.1/(最好使用完整路径,不带 ~/)添加到你的 sys.导入前的路径。

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 看起来像是您的网络服务器的文档根目录。把图书馆放在那里是最好的主意吗? (好吧,除非有唯一可以使用的地方......)


编辑(作为一般说明)

最好避免这样的语法:

try:
  something
except:
  print "error"

这绝对不会向您提供有关您遇到的实际错误的任何信息。您可以假设,如果您尝试导入一个模块,就会出现 ImportError,但不能确定。

这让调试变成了真正的 hell 。去过那里,做过那个,因此损失了几十个小时:)

只要有可能,尝试一次捕获一种异常类型。所以:

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"

关于python - 'import feedparser' 通过 SSH 工作,但在浏览器中时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755043/

相关文章:

python - pymongo.find() 超时但使用与集合相同体积的限制

html - 关于视口(viewport)的问题

javascript - "onscroll"在重绘之后或之前触发?

java - 可嵌入的跨平台 Web 浏览器?

python - 使用通用提要解析器 (feedparser) 获取自动发现链接

python - 使用 feedparser 解析 RSS feed 中的所有时间戳

python - Python 中的 RSS 提要解析器库

Python URL 和目标列表

python - 在 Python 中使用多重处理更新不同的全局变量

python - 获取两个列表之间的差异