2012-03-04 24 views
3

私はウィキペディアからテキストを掻き集めようとしています。 httplib2は既にインストールされているので、私はそれを使うと思った。Python httplib2 AttributeError: 'builtin_function_or_method'オブジェクトに 'new'属性がありません

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を再インストールしようとする可能性もありますが、現在作業中の他のものを壊す可能性があると考えて、私はそれをすることをためらっています。

答えて

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のバージョンがどちらか古すぎると、このコードを持っていないということですか、それは間違っているだろうどういうわけか。

最新のバージョンを持っている(何らかの理由でアップグレードできない/したくない)場合は、おそらくプログラムで動的に修正することができますが、その行を続行するつもりはありませんアップグレードによって修正されます。

+0

ありがとうございました。私はhttplib2-0.7.2にいて、httplib2-07.4をアップグレード/再インストールしました。 – gabe

関連する問題