2013-04-14 6 views
6

Я пытаюсь начать работу с API Python для Google Compute Engine, используя их "привет мир" учебник по https://developers.google.com/compute/docs/api/python_guide#setupGCE Python API: oauth2client.util: выполнить() принимает максимум 1 позиционного аргумента (2 дано)

Всякий раз, когда делает вызов response = request.execute(auth_http) хотя, я получаю следующее сообщение об ошибке сигнализации, что я не могу проверить подлинность:

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

Я ясно только проходя один позиционный аргумент (auth_http), и я посмотрел в oauth2client/util.py, apiclient/http.py и oauth2client/client.py для ответов, но ничто не кажется неправильным. Я обнаружил, что another stack overflow post столкнулся с одной и той же проблемой, но, похоже, что в конструкторе класса OAuth2WebServerFlow в oauth2client/client.py «access_type» уже установлен в автономном режиме (хотя, честно говоря, я не совсем понимаю, что происходит здесь с точки зрения настройки потоков oauth2.0).

Любые предложения были бы высоко оценены, и спасибо заранее!

ответ

5

Я думаю, что документация неверна. Пожалуйста, используйте следующее:

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

Вы можете сделать один из трех вещей здесь:

1 игнорировать предупреждения и ничего не делать.

2 Подавить предупреждения и установить флаг игнорировать:

import oauth2client 
import gflags 

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

3 выяснить, где в настоящее время при условии, что позиционный параметр и закрепить его:

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)