2016-03-25 81 views
2

我編碼在python,使用2.6版,與尤伯杯API的工作,當我嘗試導入庫uber_rides.auth它拋出這個錯誤:我在與尤伯杯的Python API煩惱

Traceback (most recent call last): 
    File "C:\Inetpub\vhosts\underdevelopment.biz\httpdocs\web\webtemp3\uber\socket.py", line 4, in <module>  
    from uber_rides.auth import AuthorizationCodeGrant 
    File "C:\Inetpub\vhosts\underdevelopment.biz\httpdocs\web\webtemp3\uber\uber_rides\auth.py", line 133 
    query_params = [qp: query_params[qp][0] for qp in query_params] 
        ^
SyntaxError: invalid syntax 

我的腳本的原始代碼是這樣的:

print('Content-Type: text/plain') 
print('') 
from uber_rides.auth import AuthorizationCodeGrant 
def main(): 
    auth_flow = AuthorizationCodeGrant(
     'xxxxxx-xxxxxxx', 
     'xxxxx-xxxxx', 
     'xxx-xxxxxxxxx', 
     '', 
    ) 
    auth_url = auth_flow.get_authorization_url() 

if __name__ == "__main__": 
    main() 

看來錯誤是來自庫,但我找不到它。

+1

是的,錯誤在庫中。他們使用無效的語法。這可能是他們打算使用詞典理解。 –

+1

你從哪裏得到這些文件?看看[GitHub源代碼](https://github.com/uber/rides-python-sdk/blob/master/uber_rides/auth.py#L133)那裏的語法是正確的。這也從來沒有錯,這是最初的承諾。 –

回答

2

是的,這是無效的Python語法。不過,目前還不清楚你如何結束該文件。

某人或某事改變了那個文件。這不是original source code as distributed by Uber,如該行使用的正確語法字典解析:

query_params = {qp: query_params[qp][0] for qp in query_params} 

重新安裝項目,其誤差不存在上游。

請注意,上述語法僅適用於Python 2.7及更高版本。你可以嘗試用dict()電話與發電機表達式替換它,請參閱Alternative to dict comprehension prior to Python 2.7

query_params = dict((qp, query_params[qp][0]) for qp in query_params) 

考慮到可能存在其他問題的代碼,升級到Python 2.7可能是更好的選擇。

+0

我改變了代碼,但再次拋出一個錯誤: Traceback(最近一次調用最後一次): 文件「C:\ Inetpub \ vhosts \ underdevelopment.biz \ httpdocs \ web \ webtemp3 \ uber \ socket.py」,第4行,在 從uber_rides.auth進口AuthorizationCodeGrant 文件 「C:\的Inetpub \虛擬主機\ underdevelopment.biz \的httpdocs \網絡\ webtemp3 \超級\ uber_rides \ auth.py」,線路133個 query_params = {QP:query_params [QP] [0]對於query_params中的qp ^ SyntaxError:無效的語法 –

+1

@ArturoVasquez:您正在使用Python 2.6。該庫需要Python 2.7或更高版本。 –