2015-07-12 2 views
1

Я следую документации Google here для использования remote_api_stub.Проблемы с путём с remote_api_stub

Я введите следующие две строки в оболочке Python:

sys.path.insert(0, "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine") 
from google.appengine.ext.remote_api import remote_api_stub 

, а затем я получаю ошибку:

>>> from google.appengine.ext.remote_api import remote_api_stub                    Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 76, in <module> 
    import yaml 
ImportError: No module named yaml 

Затем я могу добавить путь для YAML, как это:

sys.path.insert(0, "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/yaml/lib") 

, но затем я получаю еще одну ошибку импорта:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 95, in <module> 
    from google.appengine.tools import appengine_rpc 
    File "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 25, in <module> 
    import fancy_urllib 
ImportError: No module named fancy_urllib 

Есть ли простой способ получить все, что мне нужно на моем пути?

ответ

3

Nope. Это один из самых нелюбимых уголков GAE (сам по себе один из самых нелюбимых уголков Google). К счастью, fancy_urllib - это еще одна вещь, которую вам нужно будет вручную добавить к вашему пути.

Я также хотел бы убедиться, что правильный google находится в PATH перед попыткой импортировать remote_api_stub. Вы читаете это правильно - у Google есть два разных пакета, которые могут существовать в пути как google.

Вот важная часть моего модуля init_remote_api, который обрабатывает всю странность настройки remote_api:

if 'google' in sys.modules: 
    del sys.modules['google'] 

sys.path.append(GAE_PATH) 
sys.path.append(os.path.join(GAE_PATH, 'lib', 'yaml', 'lib')) 
sys.path.append(os.path.join(GAE_PATH, 'lib', 'fancy_urllib')) 

from google.appengine.ext.remote_api import remote_api_stub 

def auth_func(): 
    return (GAE_USERNAME, GAE_PASSWORD) 

remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func, 
            APP_DOMAIN) 
Смежные вопросы