aws лямбда django приложение, развернутое с zappa - python приоритет импорта - PullRequest
2 голосов
/ 28 февраля 2020

У нас есть Django приложение, которое мы развертываем на AWS Lambda, используя Zappa. Мы используем pipenv для управления python пакетами проекта. Некоторые используемые нами пакеты (например, криптография) должны быть скомпилированы с той же конфигурацией, что и лямбда-машина. Для этого я создал колеса для этих пакетов на аналогичной машине и включил их в подпапку в каталоге. Итак, вот наш процесс развертывания:

  • установка пакетов с pipenv (которая также включает в себя эти специальные пакеты)
  • извлечение предварительно скомпилированных колес в специальный каталог
  • run zappa команда deploy

Итак, после этого у нас есть две версии этих пакетов, одна установлена ​​через pipenv, а другая извлечена вручную из предварительно скомпилированных колес. Причина этого в том, что я все еще хочу, чтобы проект мог запускаться локально (используя пакет, установленный через pipenv, а не предварительно скомпилированные). Поэтому я хочу, чтобы локальные версии проекта использовали пакеты, установленные через pipenv, но я хочу, чтобы Lambda использовала извлеченную - предварительно скомпилированную версию.

Я добавил каталог, в котором мы храним предварительно скомпилированные пакеты, в переменную среды PYTHONPATH, но пока как я вижу, zappa помещает все python пакеты, установленные через pipenv, в папку root проекта. Они имеют приоритет перед тем, что я добавляю в PYTHONPATH в порядке разрешения пакетов импорта.

Итак, есть ли у меня какие-либо возможности сказать python, чтобы дать конкретному c приоритету импорта папки разрешение перед всеми остальными?

...