Управление зависимостями — это важная часть разработки на Python. Зависимости — это внешние библиотеки и пакеты, которые использует ваш проект. Для управления зависимостями чаще всего используются два подхода: requirements.txt
и Pipenv
. Рассмотрим оба метода подробно.
requirements.txt
— это текстовый файл, в котором перечислены все зависимости проекта с указанием их версий. Это самый простой и распространённый способ управления зависимостями.
Установите все необходимые пакеты в вашем виртуальном окружении с помощью pip
:
pip install requests flask pandas
Экспортируйте список установленных пакетов в файл requirements.txt
:
pip freeze > requirements.txt
Содержимое файла будет выглядеть так:
requests==2.26.0
flask==2.0.1
pandas==1.3.3
Чтобы установить все зависимости из requirements.txt
на другом компьютере или в новом виртуальном окружении, выполните команду:
pip install -r requirements.txt
Pipenv
— это более современный инструмент, который объединяет управление зависимостями и виртуальными окружениями. Он автоматически создаёт и управляет виртуальным окружением, а также использует два файла: Pipfile
и Pipfile.lock
.
Установите Pipenv
с помощью pip
:
pip install pipenv
Создайте новый проект или перейдите в существующий:
cd myproject
Установите зависимости с помощью Pipenv
:
pipenv install requests flask pandas
Pipenv
автоматически создаст виртуальное окружение и добавит зависимости в Pipfile
.--dev
:
pipenv install pytest --dev
Активируйте виртуальное окружение:
pipenv shell
Чтобы установить все зависимости из Pipfile
, выполните:
pipenv install
Чтобы зафиксировать точные версии зависимостей, используйте:
pipenv lock
Это создаст или обновит файл Pipfile.lock
, который содержит точные версии всех зависимостей.
Pipfile
: Содержит список зависимостей и их версий в удобном формате (аналог requirements.txt
, но более структурированный).
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
requests = "*"
flask = "*"
pandas = "*"
[dev-packages]
pytest = "*"
Pipfile.lock
: Содержит точные версии всех зависимостей, включая транзитивные (вложенные) зависимости. Это гарантирует воспроизводимость окружения.
Pipfile
для описания зависимостей.Pipfile.lock
.pip
(из-за создания Pipfile.lock
).Характеристика | requirements.txt | Pipenv |
---|---|---|
Управление виртуальным окружением | Вручную (через venv) | Автоматически |
Формат файла | Простой текстовый файл | Структурированный Pipfile |
Фиксация версий | Ручное обновление | Автоматически через Pipfile.lock |
Разделение зависимостей | Нет | Есть (основные и разработческие) |
Скорость | Быстро | Медленнее (из-за Pipfile.lock) |
requirements.txt
— это простой и универсальный способ управления зависимостями, который подходит для большинства проектов.Pipenv
— это более современный инструмент, который автоматизирует управление виртуальным окружением и зависимостями, обеспечивая воспроизводимость и удобство.requirements.txt
и Pipenv
зависит от сложности проекта и ваших предпочтений. Для небольших проектов подойдёт requirements.txt
, а для более сложных — Pipenv
.Используйте тот инструмент, который лучше всего соответствует вашим потребностям, и не забывайте фиксировать зависимости для воспроизводимости вашего проекта!