2013-04-14 6 views
6

deniyorum https://developers.google.com/compute/docs/api/python_guide#setupGCE Python API: oauth2client.util: (yürütme) en fazla 1 pozisyonel argüman (2 verilen)

üzerindeki "merhaba dünya" öğretici kullanarak Google Compute Engine için Python API ile başlamak için gereken gerçi çağrıyı response = request.execute(auth_http) yapım zaman

, aşağıdaki hata ben kimliğini olamayacağını sinyalizasyon olsun: Ben açıkça sadece bir konumsal argüman (auth_http) geçiyorum

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

ve ben oauth2client inceledik/Cevaplar için util.py, apiclient/http.py ve oauth2client/client.py, ancak hiçbir şey yanlış görünüyor. Ben aynı sorunla karşılaştı another stack overflow post bulundu, ama oauth2client/client.py içinde OAuth2WebServerFlow sınıfının kurucusu, 'access_type' zaten 'çevrimdışı' olarak ayarlanmış gibi görünüyor (dürüst olmak gerekirse ben ne olup bittiğini tamamen anlamadım oauth2.0 akışlarını ayarlama açısından burada).

Her türlü öneri çok takdir edilecek ve şimdiden teşekkürler!

cevap

5

Belgenin yanlış olduğunu düşünüyorum. Aşağıdakileri kullanın:

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

Burada üç şeyden birini yapabilirsiniz. konumsal parametre sağlanmaktadır burada

import oauth2client 
import gflags 

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

3 Şekil üzerinden ve düzeltmek:

2 bastır uyarıları ve bayrak set görmezden

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)