Упаковка локальных зависимостей Python для развертывания Zappa - PullRequest
0 голосов
/ 10 октября 2019

Контекст

У меня есть локальная папка, содержащая несколько приложений Python Flask и пакет python commons. Как вы можете видеть, я создал virtualenv для каждого из приложений Flask, потому что я хотел бы развернуть его в AWS Lambda с помощью Zappa и включить только соответствующие зависимости в zip-пакет пакета, который идет в AWS.

project_folder/
 +-- commons/
 |   +-- __init__.py
 |   +-- setup.py
 |   +-- module1.py
 +-- application1/
 |   +-- __init__.py
 |   +-- app.py
 |   +-- env/
 +-- application2/
 |   +-- __init__.py
 |   +-- app.py
 |   +-- env/

Проблема

Я не могу включить пакет commons в приложения Flask. Я предполагаю, что это нужно сделать, потому что это залог, а не подкаталог.

  • Я бы не хотел добавлять копию в каждое приложение Flask.
  • Я не хочу создавать весь проект в один гигантский пакет, потому что он станет слишком большим для AWS Lambda.

Вопрос

Как я могу убедиться, что пакет commons включен, когда я звоню zappa deploy изнутри project_folder/application1/?

1 Ответ

1 голос
/ 10 октября 2019

Одним из решений является установка пакета в вашей виртуальной среде (pip install . в каталоге commons ). Заппа будет использовать все установленные в ней пакеты.

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

  1. Создать скрипт , который поможет вам, переустановив и затем позвонив zappa deploy.
  2. Попробуйте создать свойсобственный модуль и зарегистрируйте его в разделе callbacks zappa_settings.json . Этот модуль будет вызываться процессом развертывания / обновления и теоретически может переустановить пакет заранее. Тем не менее, этот вариант - просто мое предположение , что это возможно. Я никогда не пробовал ничего подобного.
...