Удаленный API Google App Engine Python в Cloud Shell: нет модуля с именем appengine.tools

Я пытаюсь использовать App Engine Remote API в Google Cloud Shell, но продолжает получать ошибку "ImportError: нет модуля с именем appengine .tools ".

Сначала я выполнил эти шаги, чтобы настроить Cloud Shell на чистую штат.

Затем я пытаюсь запустить оболочку API с помощью следующей команды:

/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/remote_api_shell.py -s [myprojectID].appspot.com

Сначала я получаю сообщение об ошибке «-bash: /google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/remote_api_shell.py: Permission denied», поэтому перехожу к файлу и делать

sudo chmod +x remote_api_shell.py

Затем, когда я снова пытаюсь выполнить команду, я получаю ошибку ImportError, указанную выше.

Я просмотрел несколько похожих тем (здесь) и (здесь), и пользователи, похоже, сообщить, что выполнение команды «sudo pip uninstall protobuf» устранило их проблему, но это не помогает мне.

Еще одно предложение заключалось в добавлении SDK App Engine в PYTHONPATH, поэтому я попытался выполнить

 export PYTHONPATH=/usr/bin/python2.7
 export GAE_SDK_ROOT="/google/google-cloud-sdk/platform/google_appengine/"
 export PYTHONPATH=${GAE_SDK_ROOT}:${PYTHONPATH}

Но ошибка сохраняется. Я думаю, что проблема отражена здесь:

>>> import google
>>> print google.__path__
['/usr/local/lib/python2.7/dist-packages/google']

Есть ли способ быстро исправить это, сохранив как можно большую часть состояния Cloud Shell по умолчанию? Поскольку Cloud Shell недолговечен, полагаю, этот процесс придется повторить.

Я настроил свое приложение для включения удаленного доступа, хотя не думаю, что продвинулся достаточно далеко, чтобы это стало проблемой.

Все компоненты Gcloud обновлены, что, как я полагаю, гарантировано при очистке состояния Cloud Shell.

Добавление «python» или «python2» к команде приводит к той же ошибке.

Отредактировано, чтобы добавить полное сообщение об ошибке:

Traceback (most recent call last):
File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/remote_api_shell.py", line 29, in <module>
from google.appengine.tools import os_compat
ImportError: No module named appengine.tools

person Jables Hables    schedule 03.08.2018    source источник
comment
Попробуйте python /google/google-cloud-sdk/platform/google_appengine/remote_api_shell.py ...   -  person Dan Cornilescu    schedule 03.08.2018
comment
Отредактировано, чтобы добавить, что добавление python или python2 приводит к той же ошибке. Если я попробую эту точную команду, я получаю ValueError: GAE_SDK_ROOT '/ google / google-cloud-sdk / platform / google_appengine / google' не относится к допустимому каталогу SDK   -  person Jables Hables    schedule 03.08.2018
comment
Обратите внимание на другой путь remote_api_shell.py, на один каталог выше ...   -  person Dan Cornilescu    schedule 03.08.2018
comment
Хорошо, похоже, что это сработало после того, как я снова очистил состояние оболочки, поскольку похоже, что настройки GAE_SDK_ROOT выше не позволили ему выполнить. Я не совсем уверен, как я пропустил этот другой экземпляр этого файла - есть идеи, почему их два?   -  person Jables Hables    schedule 03.08.2018


Ответы (1)


Как было предложено Дэном Корнилеску, основная причина проблемы, похоже, заключается в том, что я выполнял не тот файл. После очистки состояния Cloud Shell еще раз, я выполнил:

python /google/google-cloud-sdk/platform/google_appengine/remote_api_shell.py -s [myprojectID].appspot.com

и это сработало

person Jables Hables    schedule 03.08.2018