2013-04-14 5 views
6

Ich versuche, mit dem Python-API für Google Compute Engine mit ihrem "Hallo Welt" Tutorial auf https://developers.google.com/compute/docs/api/python_guide#setupGCE Python API: oauth2client.util: execute() nimmt höchstens 1 Positions Argument (2 angegeben)

loszulegen obwohl

wenn response = request.execute(auth_http) callte, bekomme ich folgende Fehler signalisiert, dass ich nicht authentifizieren kann:

WARNING:oauth2client.util:execute() takes at most 1 positional argument (2 given) 

ich bin eindeutig nur ein Positionsargument (auth_http) vorbei, und ich habe in oauth2client sieht/util.py, apiclient/http.py und oauth2client/client.py für Antworten, aber nichts scheint nicht in Ordnung. Ich habe gefunden another stack overflow post, die das gleiche Problem, aber es scheint, dass im Konstruktor der OAuth2WebServerFlow-Klasse in oauth2client/client.py, 'access_type' ist bereits auf 'offline' gesetzt (obwohl um ehrlich zu sein, ich verstehe nicht vollständig, was los ist hier in Bezug auf die Einrichtung von oauth2.0 fließt).

Alle Vorschläge würden sehr geschätzt werden, und danke im Voraus!

Antwort

5

Ich denke, Dokumentation ist falsch. Bitte verwenden Sie die folgende:

auth_http = credentials.authorize(http) 

# Build the service 
gce_service = build('compute', API_VERSION, http=auth_http) 
project_url = '%s%s' % (GCE_URL, PROJECT_ID) 

# List instances 
request = gce_service.instances().list(project=PROJECT_ID, filter=None, zone=DEFAULT_ZONE) 
response = request.execute() 
1

Sie eines von drei Dingen hier tun:

1 die Warnungen ignorieren und nichts tun.

2 Suppress die Warnungen und das Kennzeichen zu ignorieren:

import oauth2client 
import gflags 

gflags.FLAGS['positional_parameters_enforcement'].value = 'IGNORE' 

3 herausfinden, wo die Positionsparameter vorgesehen ist und beheben:

import oauth2client 
import gflags 

gflags.FLAGS['positional_parameters_enforcement'].value = 'EXCEPTION' 

# Implement a try and catch around your code: 
try: 
    pass 
except TypeError, e: 
    # Print the stack so you can fix the problem, see python exception traceback docs. 
    print str(e)