2012-09-04 5 views
13

난 그냥 'easy_insatll' 를 사용하여 요청 모듈을 설치하고 난이 tutrorial의 데모 코드를 실행하려고'모듈 객체에'get '속성이 없습니다. Python 오류 요청?

import requests 
payload = {'username': 'xxxx', 'password': 'xxxxx'} 
r = requests.get('https://github.com/timeline.json') 

하지만 난이 오류 : AttributeError : 'module' object has no attribute 'get'

어떤 생각을? 감사합니다.

답변

9

당신은 모듈의 이름으로 더 이상 그들 앞에 할 필요가 없습니다 의미 로컬 네임 스페이스로 requests 모듈에서 모든 이름을 가져 : 당신이를 가져올 것 인 경우에

>>> from requests import * 
>>> get 
<function get at 0x107820b18> 

import requests 문 모듈 대신, 당신은 당신의 네임 스페이스에 모듈 자체를 추가하면 전체 이름을 사용해야합니까 : 위의 예 내가 인터프리터 내 테스트에서 가져온 것입니다

>>> import requests 
>>> requests.get 
<function get at 0x102e46b18> 

참고. 결과가 다른 경우 잘못된 모듈을 가져오고 있습니다.

>>> print dir(requests) 
['ConnectionError', 'HTTPError', 'Request', 'RequestException', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__', '_oauth', 'api', 'auth', 'certs', 'codes', 'compat', 'cookies', 'defaults', 'delete', 'exceptions', 'get', 'head', 'hooks', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'safe_mode', 'session', 'sessions', 'status_codes', 'structures', 'utils'] 
+0

고마워, 문제가 해결되었지만 그 중 nether가 작동 함 – mojians

+1

감사합니다. 문제가 해결되었습니다. 다른 요청 디렉토리를 삭제했는데 작동합니다. – mojians

+1

예 중복 존재 파일 (requests.py) 문제입니다, 내가 requests.py라는 파일을 작성하고 여기에 내가 "요청"모듈을 가져옵니다. 그래서 파이썬 엔진 보이는 가장 가까운 하나 즉, 현재 파일 이름에 메서드를 얻을. 해결책은 내가 쓰고있는 파일의 이름을 바꾸는 것입니다. – SIslam

3

이 문제를 해결하는 방법이 다릅니다.

import requests 

또는

r = get('https://github.com/timeline.json') 

P.S. 첫 번째 바람직하다

+0

감사합니다. 코드를 수정했지만 여전히 오류가 나타납니다. – mojians

+0

@mojians 'print dir (requests)'pls를 보여주십시오. –

+0

@mojians 'requests' 패키지에 문제가 있습니다. ['__builtins__ ','__doc__ ','__file__ ','__name__ ','__package__ ','requests '] – mojians

19

이 관련이없는 requests.py의 전형적인 증상은 다음과 같습니다

>>> import requests 
>>> print requests.__file__ 
/private/tmp/requeststest/lib/python2.7/site-packages/requests/__init__.pyc 

또한 이름을 테스트 할 수는 requests 모듈에서 제공 리스팅 : 당신이 당신의 파이썬 패키지에 추가 requests.py 파일이 있는지 확인 (또는 requests.pyc) 파일을 현재 디렉토리 나 다른 곳의 PYTHONPATH에 저장하십시오. 이 경우 실제로 가져 오려는 모듈이 섀도 잉되어 있으므로 제거하거나 이름을 변경하십시오.

+2

감사합니다, 이건 정확히 내가 만난 것입니다 – mojians

3

이미 언급 한 것처럼 가장 일반적인 문제는 PYTHONPATH 어딘가에 requests.py 파일이 있다는 것입니다.

요청 모듈이 다른 모듈 (예 : 표준 파이썬 라이브러리)을 내부적으로 사용하므로 다른 파일 이름에도 문제가있을 수 있습니다. 예를 들어 스크립트 이름을 http.py으로 지정했을 때 동일한 문제가 발생했습니다. 이 경우 print dir(requests)의 출력이 정확하여 오류를 좀 더 자세히 추적 할 수 없습니다.

+1

고마워요. 방금 예제 코드를 작성해 봤어. 나는 그것을 가져올 의도가 전혀 없었지만 추후에 json.py가 가장 현명한 파일 이름이 아니 었습니다 :/ –

1

요청 개체가있는 장고와 같은 프레임 워크로 작업하는 경우 사용자 오류 일 수 있습니다.

가 나는 끊임없이 장고의 혼란을 얻을 :

request.POST 

request 년대 : 어쨌든, 내 문제를했다

request.post 

합니다.아래 득표에 힘 입어.

1

동일한 오류가 발생했습니다.

내가 한 모든

그럼 난 다른 이름으로 저장 requests.py로 저장했다. 그리고 문제가 해결되었습니다.

+0

고마워요, 그게 전부입니다. –

2

테스트 파일의 이름을 실수로 만든 것은 requests.py입니다. 따라서, 가져올 때 requests.py, 내가 가져오고 싶지 않습니다. 그런 다음 테스트 파일의 이름을 변경했습니다. 그것은 작동합니다!