2012-05-13 9 views
2

何百万回も実行しましたが、何らかの理由でurllib2を使用しようとすると奇妙なエラーが発生します。私は最近、Ubuntu 11.10から12.04にアップグレードしました。Pythonを使用しているときに奇妙なImportError urllib2

コード:

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はを使用しているとき、私は同様のエラーを取得します。これを引き起こす可能性があり、この問題を解決する方法については、

答えて

1

ファイル "/home/nate/httplib.py"、ライン362、

あなたはappengine.apiをインポートしようとしているhttplib.pyと呼ばれるあなたのsys.path内のファイルを持っています。

/home/nate/httplib.pyの名前は、同じ名前の標準ライブラリモジュールがシャドーイングされているため、別の名前に変更してください。

+0

PYTHONPATHにはありません。 sys.pathの最初のカレントディレクトリにあります。 – quantum

+0

はい。訂正してくれてありがとう、@ xiaomao。 – unutbu

3

標準モジュールhttplibをオーバーライドするhttplib.pyがあるようです。そして、存在しないGoogle App Engine関連のライブラリをインポートしようとしています。 httplib.pyの名前を別のものに変更する必要があります。

+0

完璧に感謝しました! – systemnate

0

requests libraryをご覧ください。これは、HTTPでの作業を簡単にします。

"Pythonの標準urllib2モジュールは、必要なHTTP機能の大部分を提供しますが、APIは完全に壊れています。別の時間と別のWeb用に構築されています。膨大な作業(メソッドのオーバーライドさえ)最も簡単な作業を実行することができます。

+0

私は間違いなくこれを調べます。助けてくれてありがとう! – systemnate

+0

これは素晴らしい提案ですが、質問には一切答えません。コメントimoする必要があります。 – ThiefMaster

関連する問題