使用Python urllib2时出现奇怪的ImportError

时间:2012-05-13 18:53:56

标签: python urllib2

我已经完成了这一百万次,但出于某种原因,我在尝试使用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时出现类似错误。有什么可能导致这个以及如何解决这个问题的想法?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

  

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

您的sys.path名为httplib.py的文件正在尝试导入appengine.api。

/home/nate/httplib.py重命名为其他内容,因为它会影响同名的标准库模块。

答案 2 :(得分:0)

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

“Python的标准urllib2模块提供了您需要的大部分HTTP功能,但API彻底破坏了。它是针对不同的时间构建的 - 而且是一个不同的Web。它需要大量的工作(甚至是方法覆盖)执行最简单的任务。“