Python httplib2 AttributeError:'builtin_function_or_method'对象没有属性'new'

时间:2012-03-04 19:45:09

标签: python httplib2

我正在尝试从维基百科中删除文本。由于已经安装了httplib2,我以为我会用它。

当我从他们的basic examples进行简单检索时,第一个例子给了我这个错误。

> import httplib2
> h = httplib2.Http(".cache")
> url = "http://code.google.com/p/httplib2/"
> h.request(url, "GET")

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/httplib2/__init__.py", line 978, in request
  cached_value = self.cache.get(cachekey)
 File "/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/httplib2/__init__.py", line 625, in get
  cacheFullPath = os.path.join(self.cache, self.safe(key))
 File "/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/httplib2/__init__.py", line 189, in safename
  filemd5 = md5.new(filename).hexdigest()
AttributeError: 'builtin_function_or_method' object has no attribute 'new'

我在Mac OS X上运行,Python版本:7.2-2(64位),Enthought Distribution。

我认为这可能是安装错误的问题,但是httplib2再次安装了我一直在使用的其他软件包。此外,我可以尝试重新安装httplib2,但我对此犹豫不决,认为它可能会破坏当前正在运行的其他内容。

1 个答案:

答案 0 :(得分:2)

因为不推荐使用md5模块(参见http://docs.python.org/library/md5.html),所以httplib2具有动态检查旧md5.new函数或新hashlib.md5函数的代码。它接近模块的顶部,在我所拥有的版本中它看起来像这样:

# remove depracated warning in python2.6
try:
    from hashlib import sha1 as _sha, md5 as _md5
except ImportError:
    import sha
    import md5
    _sha = sha.new
    _md5 = md5.new

我的猜测是你的httplib2版本太旧而且没有这个代码,或者它以某种方式出错了。

如果您拥有最新版本(或由于某些原因无法/不愿意升级),您可以在程序中动态修复它,但我不会继续在该行中,希望升级将解决它。