Интерактивная консоль Google App Engine с использованием Терминала - PullRequest
0 голосов
/ 27 июля 2011

Следуя инструкциям на этой странице, Удаленный доступ к хранилищу данных с помощью remote_api :

Я отредактировал app.yaml, чтобы включить эти строки:

builtins:
- remote_api: on

Я открыл Терминал:

$ cd /path/to/app
$ python2.5 /usr/local/google_appengine/remote_api.shell.py\
            -s localhost:8082 -p /_ah/remote_api

В корне структуры папок моего приложения у меня есть модуль с именем foobar.py, а также пакет с именем data_models. Получив доступ к интерпретатору remote_api Python, я пробую следующие строки:

import foobar
import data_models

Но я получаю ошибку:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named foobar

Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named data_models

Как получить доступ к интерактивной консоли через Терминал? Я что-то пропустил? То же самое происходит, даже если я захожу на облачный сервер:

$ python2.5 /usr/local/google_appengine/remote_api.shell.py\
            -s my-app.appspot.com -p /_ah/remote_api

Ответы [ 3 ]

3 голосов
/ 28 июля 2011

remote_api просто позволяет выполнять вызовы RPC из локальной задачи в удаленный экземпляр приложения App Engine. Сама консоль Python все еще локальна, и все, что вы делаете, выполняется локально. Это означает, что любые модули, которые вы пытаетесь и импортируете, должны существовать на вашем локальном компьютере, где ваш экземпляр Python может их найти - возможно, добавив каталог вашего приложения в PYTHONPATH, например:

$ PYTHONPATH=/my/app/dir python2.5 /usr/local/google_appengine/remote_api.shell.py\
        -s my-app.appspot.com -p /_ah/remote_api
0 голосов
/ 28 июля 2011

Я добавил следующие строки в свой .bash_profile, чтобы мне не приходилось редактировать PYTHONPATH каждый раз, когда я запускаю Терминал.

PYTHONPATH = "/path/to/app"
export PYTHONPATH
0 голосов
/ 27 июля 2011

Похоже, что remote_api находится не в том же пути, что и ваше приложение, поэтому curpwd соответствует пути в remote_api, поэтому код вашего приложения недоступен

...