Heroku устанавливает дополнительный пакет Python

У меня есть приложение на Python / Django, которое использует Pipfile и Pipfile.lock, работающее на стеке Heroku-22 с классическими пакетами сборки.

requirements.txt не является частью базы кода, поэтому, например, Ошибка Heroku: Модуль не найден: нет модуля с именем "запросы" и подобные проблемы не актуальны.

Pipfile и Pipfile.lock содержат psycopg2 (не psycopg2-binary). В среде тестирования установлены ожидаемые пакеты, однако в рабочей среде установлен дополнительный пакет psycopg.

$ heroku run bash -a my-app-production
~ $ pip freeze | grep -i psyco
psycopg==3.2.4
psycopg2==2.9.10

против

$ heroku run bash -a my-app-testing
~ $ pip freeze | grep -i psyco
psycopg2==2.9.10

Среда тестирования и рабочая среда одинаковы, за одним исключением - серверный Pgbouncer работает в рабочей среде. Pgbouncer (https://github.com/pgbouncer/pgbouncer) перечисляет psycopg как одну из своих зависимостей. Хотя, согласно документации Heroku, пул подключений Pgbouncer существует на сервере базы данных, а не на app dyno.

Кроме того, установка зависимостей приложения локально в контейнер Docker с помощью pipenv install --deploy работает так, как ожидалось.

Есть какие-нибудь идеи, откуда берется этот дополнительный пакет psycopg? Он установлен из-за Pgbouncer (на мой взгляд, маловероятно)?

Вернуться на верх