Google App-Engine запускает setup.py install для собственного приложения Python - PullRequest
1 голос
/ 22 марта 2019

Я понимаю, что это может быть очень простой вопрос, но я разрабатываю приложение Python на Google App Engine Standard, используя некоторые базовые учебные пособия.

Многие из этих учебников являются MVC, и это здорово,но файлы кода не организованы.Для иллюстрации рассмотрим демо: https://github.com/GoogleCloudPlatform/appengine-search-python-java/tree/master/product_search_python. Автор включает в корневой каталог файл admin_handlers.py, base_handler.py и handlers.py.Больше никаких обработчиков, и это быстро станет непривычно.

Решение, с которым я знаком, заключается в рефакторинге в более стандартную структуру проекта, такую ​​как:

my_app
    models
        __init__.py
        models_1.py
        models_2.py
    handlers
        __init__.py
        handlers_1.py
        handlers_2.py
setup.py

, чтобы в любом файле моего приложения я мог вызвать, например, from my_app.models import model_1,и затем получить доступ к моделям, определенно определенным в этом подпакете.

Однако я не вижу никакой документации о том, как стандарт App Engine обрабатывает упаковку приложений при развертывании (т. е. работает setup.py install при развертывании приложения.)

Есть SO сообщения о том, как app-engine работает setup.py install для упаковки внешних пакетов python, но нет материала о том, как app-engine работает самостоятельно, и я не вижу примеров в их руководствах, которые включают setup.pyфайлы.

Является ли упаковка приложений во время развертывания чем-то, что поддерживает App-Engine?Или это так просто, что они не документировали?Должен ли я принять такую ​​среду, как Django, если я хочу это сделать, или можно обойтись без нее?

1 Ответ

1 голос
/ 23 марта 2019

Файл setup.py предназначен для библиотек, то, что вы пытаетесь развернуть, это приложение.

Если вы хотите превратить все ваши обработчики / модели в отдельную библиотеку (потенциально для повторного использования в других приложениях), вам нужно предоставить ему файл setup.py и разместить его в другом месте, либо самостоятельноиндекс пакета, или как git-репозиторий, и App Engine установит его на этапе сборки.

В противном случае вы можете просто включить эти файлы как часть своего приложения, без необходимости указывать setup.py:

.
├── main.py
├── my_library
│   ├── __init__.py
│   ├── handlers
│   │   ├── __init__.py
│   │   ├── handlers_1.py
│   │   └── handlers_2.py
│   └── models
│       ├── __init__.py
│       ├── models_1.py
│       └── models_2.py
└── requirements.txt

И используйте их в main.py как:

from my_library.models import model_1
...