2013-07-08 2 views
2

Я пытаюсь этот простой код:питон - AttributeError: «модуль» объект не имеет атрибута

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

Он работает безотказно в командной строке при вводе строк один на один, но не whenen, когда я выполнить его как сценарий или в 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] 

ответы на 'Module object has no attribute 'get' Python error Requests? не помогло.

Возможно, это была некоторая ошибка в моей системе сборки ST2 Python? Я попытался удалить все модули requests, если их было кратным, используя pip и переустановив их.

+1

У вас есть файл 'request.py' в папке« Рабочий стол »? –

+0

@AshwiniChaudhary Нет! – Bruce

+0

Не могли бы вы дважды проверить и выполнить 'print запросы .__ file__' пожалуйста ... –

ответ

5

Редактировать После прочтения stacktrace снова можно увидеть, что urllib3 пытается что-то импортировать из модуля http. Ваш файл называется http.py и поэтому импортируется вместо ожидаемого.

Фактическая ошибка происходит из-за круговой природы импорта. С requests еще не закончил импорт. Функция get в requests еще не определена, когда импорт http достигает import requests.

Примечание: Вы также должны всегда защищать свою точку входа с помощью конструкции if __name__ == '__main__'. Это часто избегает неприятных ошибок для ничего не подозревающих будущих разработчиков (включая вас самих).

+0

Файл имеет только эти 3 строки ... – Bruce

+0

@ Брюс ах, извините, но я был близок. Я просто заметил, что 'urllib3' выполняет' из http.client import HTTPConnection, HTTPException'. Кажется, ваш файл http.py' вместо этого затеняет? Попробуйте переименовать его. – Wessie

+0

Кстати, моя точка по-прежнему стоит. Всегда охраняйте свою точку входа! – Wessie

Смежные вопросы