Я пытаюсь понять, как добавить внутренний пакет к развертыванию Google App Engine с Python 3 (стандарт).
Для Python 2 способ упаковки модулей заключался в использовании локальной папки lib/ и appengine_config.py. Кажется, это больше не работает для Python 3? По крайней мере, мое приложение не может найти модули, которые находятся в папке lib/.
Для Python 3 можно просто записать пакет pip3 install -t .. Но это становится действительно беспорядочным, поскольку все пакеты просто устанавливаются в корень приложения, а также будут добавлены в репозиторий git нашего приложения.
Мы не можем использовать requirements.txt, поскольку модуль является внутренним и не будет доступен в PyPI.
Есть ли другой способ упаковки модулей для Google App Engine с помощью Python 3?





Стандартная среда выполнения Python 3.7 является «идиоматической» средой выполнения Python, что означает, что она не добавляет автоматически специальный каталог lib в путь поиска модулей.
Вы должны продолжить «продавать» свои частные модули в каталог lib, но вам нужно будет изменить способ их импорта.
Если ваш частный пакет - foobar, и вы сделали pip install -t lib foobar, то в вашем проекте вместо:
import foobar
вы делаете:
import lib.foobar
(Вам также необходимо добавить пустой файл __init__.py в каталог lib, чтобы сделать его модулем.)
Попробуйте разместить каталог пакета прямо под служебным каталогом верхнего уровня, а не в
lib, рядом с файломapp.yaml. С точки зрения GAE этот должен выглядит как другой пакет кода вашего приложения. Не уверен, что просто символическая ссылка на каталог из другого места будет работать, как в стандартной среде 1-го поколения (python 2.7) (см. stackoverflow.com/a/34291789/4495081), чтобы избежать копирования пакета