Ответ
Для проектов на Python часто рекомендуется использовать Poetry — современный инструмент для управления зависимостями. Он объединяет управление пакетами, виртуальными окружениями и публикацией в одном инструменте, обеспечивая более надежное и воспроизводимое управление зависимостями.
Почему Poetry?
Poetry помогает избежать проблем с конфликтами зависимостей и обеспечивает детерминированную установку пакетов благодаря файлу poetry.lock.
Пример pyproject.toml:
[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "Awesome project"
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
pandas = "^1.3.0"
[tool.poetry.dev-dependencies]
pytest = "^6.2.4"
black = "^21.7b0"
Основные преимущества Poetry:
- Изоляция окружений: Автоматическое создание и управление виртуальными окружениями.
- Детерминизм: Блокировка версий всех зависимостей через
poetry.lockдля воспроизводимых сборок. - Разделение зависимостей: Четкое разделение зависимостей для разработки (
dev-dependencies) и продакшена. - Удобство публикации: Упрощенный процесс публикации пакетов в PyPI.
Альтернативы:
pip+venv(базовый подход)pipenv(еще один инструмент для управления зависимостями и окружениями)
Ответ 18+ 🔞
Так, слушай, смотри, а то я тут подумал, блядь... Все эти твои проекты на Python, они же, сука, как карточный домик — один пакетик не туда поставил, и всё, пиздец, полдня ищешь, почему всё ебнулось.
Вот смотри, есть же нормальный инструмент, называется Poetry. Это не просто менеджер пакетов, это, блядь, целый комбайн, ёпта! Он за тебя и виртуальные окружения создаст, и зависимости разложит по полочкам, и даже на PyPI выложить поможет, если вдруг приспичит. Одна хуйня, но сразу на все случаи жизни.
А нахуя он вообще нужен, этот Poetry?
А затем, чувак, чтобы у тебя не было вот этой классической хуйни: «У меня на компе работает, а у тебя — нет». Он создаёт файлик poetry.lock, где намертво, как в гробу, заколачивает версии ВСЕХ библиотек, до самых последних ихних зависимостей. Воспроизводимость, блядь, на уровне бога. Поставил — и ни один пидарас не вылезет с несовместимой версией.
Смотри, как pyproject.toml выглядит, это пиздец просто:
[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "Awesome project"
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
pandas = "^1.3.0"
[tool.poetry.dev-dependencies]
pytest = "^6.2.4"
black = "^21.7b0"
И в чём конкретно кайф, спросишь?
- Окружение на автомате: Не надо ебаться с
venvиactivate. Сказалpoetry install— и он сам всё сделал, в рот меня чих-пых. - Порядок в консерватории:
poetry.lock— это святое. Собрал один раз, закоммитил, и у всей команды будет один и тот же зоопарк пакетов. Никаких «а у меня версия новее». - Разделяй и властвуй: Чётко видно, что нужно для прода (
dependencies), а что — только для разработки, типа линтеров и тестов (dev-dependencies). Красота! - Публикация — раз плюнуть: Захотел свою библиотеку миру показать — пара команд, и ты уже звезда PyPI. Не то что вручную тарболлы крутить.
Ну а если не зайдет? Ну, варианты-то есть, куда ж без них:
pip+venv— старый добрый способ, если ты, блядь, максималист и любишь всё делать руками, как Герасим из рассказа.pipenv— ну, типа конкурент, тоже неплохо, но, по ощущениям, Poetry сейчас больше паровоза набрал.
Короче, Poetry — это как перестать собирать мебель голыми руками и взять, наконец, нормальную отвёртку. Попробуй, а там видно будет.