2012-09-04 46 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> 

注意上面的例子是我從我的翻譯測試了。如果你得到不同的結果,你正在導入錯誤的模塊;檢查是否有一個額外的requests.py文件在你的Python包:

>>> 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

謝謝,我糾正了這個問題,但他們的作品 – mojians

+1

謝謝,問題解決了,我刪除了其他請求目錄,它的工作原理 – mojians

+1

是重複存在的文件(requests.py)是問題所在,我寫了一個名爲requests.py的文件,在這裏我導入了「requests」模塊。所以python引擎在最近的一個文件中查看get方法,即當前文件名。解決方案是重命名我正在寫的文件。 – SIslam

3

你必須改變如何解決這個問題。

import requests 

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

附:第一個是最好

+0

謝謝,我糾正了代碼,但錯誤仍然彈出 – mojians

+0

@mojians讓我看看'print dir(requests)'pls。 –

+0

['__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.pyc)文件位於當前目錄中,或位於PYTHONPATH的其他位置。如果是這種情況,請刪除或重命名它,因爲它會隱藏您真正想要導入的模塊。

+2

謝謝你,這正是我遇到的 – mojians

3

如前所述,最常見的問題是您的PYTHONPATH中某處有requests.py文件。

但是,由於請求模塊在內部使用其他模塊(例如來自標準python庫),所以其他文件名也可能存在問題。例如,當我命名腳本http.py時,我遇到了同樣的問題。在這種情況下,print dir(requests)的輸出是正確的,這使得跟蹤錯誤更加困難...

+1

謝謝。我只是寫了一些示例代碼。我從來沒有打算導入它,但事後看來,json.py並不是最明智的文件名:/ –

1

如果您正在使用像Django這樣的具有請求對象的框架,則可能會出現用戶錯誤。

我不斷地得到由Django的困惑:

request.POST 

request的:

request.post 

這是我的問題,反正。支持反對票。

1

我有同樣的錯誤。

我所做的只是將它保存爲requests.py

然後我保存爲其它名稱。 並解決問題。

+0

非常感謝,就是這樣。 – 2016-07-08 09:40:24

2

我犯了一個錯誤,測試文件的名稱是requests.py。 因此,當我導入requests.py時,它不是我想要導入的內容。 然後,我重命名測試文件的名稱。有用!!!

相關問題