2013-04-14 10 views
6

sto cercando di iniziare con l'API di Python per Google Compute Engine utilizzando il loro "ciao mondo" tutorial su https://developers.google.com/compute/docs/api/python_guide#setupGCE Python API: oauth2client.util: execute() prende al massimo 1 argomento posizionale (2 dato)

Ogni volta che effettua la chiamata response = request.execute(auth_http) però, ottengo il seguente errore di segnalazione che non posso autenticare:

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

sto chiaramente solo passando un argomento posizionale (auth_http), e ho guardato in oauth2client/util.py, apiclient/http.py e oauth2client/client.py per le risposte, ma nulla sembra sbagliato. Ho trovato another stack overflow post che ha riscontrato lo stesso problema, ma sembra che nel costruttore della classe OAuth2WebServerFlow in oauth2client/client.py, "access_type" sia già impostato su "offline" (anche se a dire il vero non capisco completamente cosa sta succedendo qui in termini di configurazione di flussi oauth 2.0).

Qualsiasi suggerimento sarebbe molto apprezzato, e grazie in anticipo!

risposta

5

Penso che la documentazione sia sbagliata. Utilizzare il seguente:

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

Si può fare una delle tre cose qui:

1 ignorare gli avvertimenti e non fare nulla.

2 sopprimere gli avvisi e impostare il flag di ignorare:

import oauth2client 
import gflags 

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

3 Figura su cui viene fornito il parametro posizionale e fissarlo:

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) 
Problemi correlati