Язык программирования Python

Управление проектом Python с помощью Pipenv

Управление зависимостями приложения Python обычно осуществляется с помощью виртуальной среды (VirtualEnv) + requirements.txt. Однако с увеличением сложности системы и добавлением большего количества зависимостей, а также с возможным обновлением версий этих зависимостей это может скорее помешать, чем помочь. В этом сценарии комбо venv + requirements.txt является недостаточным, поэтому стоит поискать другие альтернативы.

Если вы работали с проектами Javascript с использованием экосистемы Node JS, вы, вероятно, использовали NPM (Node Package Manager) или Yarn для управления зависимостями, или Maven в проектах Java, и, возможно, вы не заметили подобную структуру в Python. В этом случае вам необходимо познакомиться с Pipenv.

Pipenv – это инструмент, который призван привнести лучшее из всех миров упаковки (bundler, composer, npm, cargo, yarn и т.д.) в экосистему Python, объединив установщик пакетов pip и virtualenv и заменив файл requirements.txt. Выпущенный в 2017 году Кеннетом Рейцем (создателем библиотеки requests), Pipenv не потребовалось много времени, чтобы быть принятым сообществом.

Он автоматически создает и управляет виртуальной средой (virtualenv) для ваших проектов и добавляет или удаляет пакеты из вашего Pipfile, когда в их устанавливаете или удаляете. Он также генерирует важный Pipfile.lock, ваш любимый файл конфигурации системных зависимостей.

Преимущества Pipenv

  • Нет необходимости использовать pip и virtualenv отдельно. Они работают вместе.
  • Автоматически генерирует Pipfile, если он не существует.
  • Автоматически создает virtualenv в каталоге по умолчанию.
  • Автоматически добавляет или удаляет пакеты в Pipfile при их деинсталляции или установке.
  • Автоматически обнаруживает уязвимости в системе безопасности.
  • Позволяет просмотреть граф зависимостей (с помощью pipenv graph).
  • Ускоряет рабочий процесс, загружая файлы .env.

Установка Pipenv

Процесс установки Pipenv довольно прост. Убедитесь, что на вашем компьютере уже установлены Python и pip, выполнив команды*:

python --version pip --version

*в зависимости от версии вашего дистрибутива команда python может относиться к Python 2.x, если это ваш случай, попробуйте использовать python3 –version, а также pip3 –version.

Запускаем установку командой.

pip install pipenv

Применение на практике

После установки Pipenv пришло время создать виртуальную среду и установить некоторые зависимости. Для этого создайте любой проект для примера (в данном случае я назову его ‘pipenv-test’):

mkdir pipenv-test cd pipenv-test

Создайте файл Pipfile и виртуальную среду для проекта с помощью команды:

pipenv --three

Флаг –three относится к Python 3. Если вы хотите использовать его с Python 2, используйте –two.

Активируйте virtualenv проекта с помощью:

pipenv shell

Установите любую библиотеку (в данном случае мы установим requests)

pipenv install requests

Pipenv обновит наш Pipfile с установленной библиотекой Requests и позаботится о создании Pipfile.lock

Базовые команды

  • graph: возвращает график зависимостей вашего проекта.
  • run: запускает команду из virtualenv с передачей любых аргументов (pipenv run pip freeze).
  • check: проверяет, соответствует ли проект требованиям, установленным в Pipfile, или соответствие требований WBS 508 текущей среде.
  • update: обновляет зависимости проекта.
  • –help: возвращает список возможных команд.

Разница между Pipfile и Pipfile.lock

Pipfile предназначен для указания требований к пакету для приложения, как для разработки, так и для выполнения.

Pipfile.lock предназначен для указания, на основе пакетов, присутствующих в Pipfile, какую конкретную версию зависимостей следует использовать, избегая риска автоматического обновления пакетов, которые зависят друг от друга, и разрушения дерева зависимостей проекта.

Заключение

Pipenv – это инструмент для управления зависимостями, устраняющий необходимость в использовании файла requirements.txt и комбо pip + virtualenv. Производительность и организованность Pipenv делают его очень хорошей альтернативой для любого проекта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *