Как установить переменную PYTHON_PATH для моего приложения Google App Engine? - PullRequest
0 голосов
/ 31 марта 2011

Я знаю, что вы можете установить это в настройках SDK, но я волнуюсь, что это будет некорректно при развертывании приложения.Какое значение PYTHON_PATH используется в облаке Google?Могу ли я установить это?

Возвращаясь на шаг назад, я просто хочу иметь возможность сделать:

from something import something_else

Моему приложению не удалось разрешить эту ссылку, что и привело меня к попыткечтобы получить PYTHON_PATH.

1 Ответ

1 голос
/ 31 марта 2011

Как только ваш код будет развернут, он получит доступ ко всем поддерживаемым библиотекам без каких-либо действий.Чтобы добавить каталоги, относящиеся к приложению, к пути, вам нужно сделать это программно внутри вашего обработчика.Я использую такой шаблон:

paths = [
    os.path.join(os.path.dirname(__file__), 'mylib'),
    os.path.join(os.path.dirname(__file__), 'app', 'tags'),
    os.path.join(os.path.dirname(__file__), 'app', 'controllers'),
    os.path.join(os.path.dirname(__file__), 'app', 'common'),
    os.path.join(os.path.dirname(__file__), 'app', 'models'),
    os.path.join(os.path.dirname(__file__), 'app')
]
for path in paths:
    if os.path.exists(path):
        # Don't add paths that don't exist.
        sys.path.append(path)

Если вы обнаружите, что у вас возникла проблема с импортом модуля, который не является частью вашего приложения, возможно, этот модуль не поддерживается в AppEngine.См. документы для получения дополнительной информации.

РЕДАКТИРОВАТЬ: Каждый структурирует свои приложения AppEngine немного по-разному, но, как правило, вам нужно иметь этот код в главной точке входа для каждого .pyфайл, который указан как обработчик в вашем app.yaml.Как правило, файл обработчика будет выглядеть примерно так:

def main():
    # Do all of my initialization and run my
    # WSGIApplication

if __name__ == "__main__":
    main()

Вы можете указать код установки пути внутри функции main ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...