5

私はこの簡単なコードを試しています:

import requests
print requests.__file__
r = requests.get('https://github.com/timeline.json')

コマンドラインで 1 行ずつ入力すると問題なく動作しますが、スクリプトとして実行したり、Sublime Text 2 で実行した場合は問題ありません。スタック トレースは次のとおりです。

C:\Python27\lib\site-packages\requests\__init__.pyc
Traceback (most recent call last):
  File "C:\Users\Bruce\Desktop\http.py", line 1, in <module>
    import requests
  File "C:\Python27\lib\site-packages\requests\__init__.py", line 53, in <module>
    from requests.packages.urllib3.contrib import pyopenssl
  File "C:\Python27\lib\site-packages\requests\packages\__init__.py", line 3, in <module>
    from . import urllib3
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\__init__.py", line 16, in <module>
    from .connectionpool import (
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 15, in <module>
    from http.client import HTTPConnection, HTTPException
  File "C:\Users\Bruce\Desktop\http.py", line 3, in <module>
    r = requests.get('https://github.com/timeline.json')
AttributeError: 'module' object has no attribute 'get'
[Finished in 0.2s with exit code 1]

「モジュール オブジェクトに属性 'get' がありません」に関する回答Python エラー リクエスト? あまり役に立ちませんでした。

これは私の ST2 Python ビルド システムのエラーでしょうか? requests複数のモジュールがある場合に備えて、それらを使用してすべてのモジュールを削除しpip、再インストールしてみました。

4

1 に答える 1

9

編集スタックトレースをもう一度読んだ後、モジュールurllib3から何かをインポートしようとしていることがわかります。httpファイルが呼び出されhttp.py、予期されたファイルの代わりにインポートされます。

実際のエラーは、インポートの循環的な性質のために発生します。requestsまだインポートが完全に終わっていないので。インポートが再び到達したとき、のget関数requestsはまだ定義されていません。httpimport requests

if __name__ == '__main__': また、エントリ ポイントをコンストラクトで常に保護することもできます。これにより、疑いを持たない将来の開発者 (あなた自身を含む) にとって厄介なエラーが回避されることがよくあります。

于 2013-07-08T15:12:11.923 に答える