Управление зависимостями — это важная часть разработки на 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.Используйте тот инструмент, который лучше всего соответствует вашим потребностям, и не забывайте фиксировать зависимости для воспроизводимости вашего проекта!