Найти в Дзене

Управление зависимостями Python: фиксация версий

Обновление пакетов в Python-проекте без системы управления зависимостями часто приводит к неожиданным поломкам. Пакет обновляется, тянет за собой другие версии библиотек, и приложение перестает работать. Современные инструменты разделяют понятия "зависимости, которые нам нужны" и "конкретные версии, которые установлены". * Вариант 1 (Poetry): # Команды для работы с зависимостями poetry add requests@latest # Добавление или обновление пакета poetry update # Обновление всех пакетов в рамках ограничений poetry export -f requirements.txt --output requirements.txt # Экспорт для Docker * Вариант 2 (pip-tools): pазделение на прямые и транзитивные зависимости. # update_deps.sh pip-compile requirements.in # Генерация requirements.txt с фиксированными версиями pip-sync requirements.txt # Приведение окружения к состоянию из requirements.txt Фиксация версий через lock-файлы гарантирует, что у всех разработчиков и на сервере будет одинаковый набор библиотек

Управление зависимостями Python: фиксация версий

Обновление пакетов в Python-проекте без системы управления зависимостями часто приводит к неожиданным поломкам. Пакет обновляется, тянет за собой другие версии библиотек, и приложение перестает работать.

Современные инструменты разделяют понятия "зависимости, которые нам нужны" и "конкретные версии, которые установлены".

* Вариант 1 (Poetry):

# Команды для работы с зависимостями

poetry add requests@latest # Добавление или обновление пакета

poetry update # Обновление всех пакетов в рамках ограничений

poetry export -f requirements.txt --output requirements.txt # Экспорт для Docker

* Вариант 2 (pip-tools): pазделение на прямые и транзитивные зависимости.

# update_deps.sh

pip-compile requirements.in # Генерация requirements.txt с фиксированными версиями

pip-sync requirements.txt # Приведение окружения к состоянию из requirements.txt

Фиксация версий через lock-файлы гарантирует, что у всех разработчиков и на сервере будет одинаковый набор библиотек.

Используете ли вы pip freeze или более продвинутые инструменты для управления зависимостями?

P.S. Файл с зафиксированными версиями (poetry.lock или requirements.txt) должен быть в репозитории, а файл с верхнеуровневыми зависимостями (pyproject.toml или requirements.in) - тем более.

👉🏻 Я в Telegram - https://dzen.ru/id/686102a27e39653c3429f77f

👉🏻 Я в VK - vk.com/helcode

👉🏻 Я на Boosty - boosty.to/helcode