2

我已经这样做了一百万次,但由于某种原因,我在尝试使用 urllib2 时遇到了一些奇怪的错误。我最近从 Ubuntu 11.10 升级到 12.04。

代码:

from urllib2 import urlopen
urlopen('http://www.google.com').read()

结果:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    urlopen('http://www.google.com').read()
  File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 400, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 418, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1146, in do_open
    h = http_class(host, timeout=req.timeout) # will parse host:port
  File "/home/nate/httplib.py", line 362, in __init__
ImportError: No module named appengine.api

使用 urllib 时出现类似的错误。关于可能导致此问题以及如何解决此问题的任何想法?

4

3 回答 3

3

看起来您有一个覆盖标准模块 httplib 的 httplib.py。它正在尝试导入不存在的 Google App Engine 相关库。您需要将 httplib.py 重命名为其他名称。

于 2012-05-13T18:59:07.160 回答
1

文件“/home/nate/httplib.py”,第 362 行,

您的sys.path调用httplib.py中有一个文件正在尝试导入 appengine.api。

重命名您的/home/nate/httplib.py其他内容,因为它隐藏了同名的标准库模块。

于 2012-05-13T18:57:42.990 回答
0

我强烈建议您查看requests 库。它使使用 HTTP 变得轻而易举。

“Python 的标准 urllib2 模块提供了您需要的大部分 HTTP 功能,但 API 被彻底破坏了。它是为不同的时间和不同的网络构建的。它需要大量的工作(甚至方法覆盖)来执行最简单的的任务。”

于 2012-05-13T19:01:54.423 回答