Рубрики
Без рубрики

Пипенв: более новая диспетчер зависимости

Как использование Pipenv меняет способ управления проектом Python. Помечено Python, производительность, распределение, учебное пособие.

Это часть серии, объясняющего различные варианты управления зависимостями Python. Убедитесь, что вы прочитали предыдущие два поста, это будет строить на этой информации.

Pipenv – это инструмент, который позволяет сэкономить несколько шагов в разработке и дает вам возможность заблокировать зависимости. Однако это очень медленно и совершенно самоуверенно, по умолчанию уточняют вам неприятности, если вы не осторожны.

Этот список очень похож на The Vanilla Stack, объединяя несколько компонентов.

  • Пипнв : Используется для установки зависимостей и управлять виртуальной средой
  • Pipfile : Используется для объявления как производственных и развитие зависимостей
  • Pipfile.lock: Файл, используемый для синхронизации точных версий зависимостей между средами
  • setup.py : Файл используется для установки метаданных для и создания пакета
  • seturgools : Используется для создания вашего проекта
  • шпагат : Используется для загрузки вашего проекта на Pypi Server
  • пипс : Используется для некоторых случаев распределения

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

TL; доктор

Стог Piprenv экономит ваше время, в основном абстрагирующими команды, связанные с виртуальной средой. Он также позволяет вам отделить требования (версии зависимостей вашего проекта) от последней тестируемой версии (тот, который вы наверняка работаете с вашим проектом).

Определение требований

  • 👍 Требования к разработке: Одним из основных улучшений на ванильном стеке является возможность объявить требования к развитию в том же файле, что и требования к производству. Сделайте это либо путем вручную добавления к [dev-packages] Раздел PipFile или делает Pipenv Установить --dev. [ имя пакета]
  • 😕 Воспроизводимость: при этом файл блокировки вы можете использовать, это огромный шаг из Ванильный стек Пипнв прилагает достаточно усилий, чтобы вы могли постоянно обновлять свои пакеты. Вы можете использовать Pipenv Sync Чтобы установить то, что в вашем файле блокировки, но Каждая другая команда ( Добавить , Установить и т. Д.) Буду обновлять ваши пакеты и файл блокировки, то есть трудно поддерживать воспроизводимость.
  • 😨 Добавление новых пакетов: поскольку Pipenv попытается обновить весь ваш проект всякий раз, когда он может, добавление новых пакетов становится настоящей болью. По сути, вы не можете сделать это, если вы не определяете вручную, определяющие полные версии (например, == 2.3.2 ) или готовы просмотреть и тестировать все, что обновлено. Что хуже, если вы используете Pipenv Установить Команда добавить пакет как к вашей среде, так и вам PipFiles, он будет по умолчанию для подстановки ( * ), что означает любой Версия этого пакета принимается как обновление (даже нарушение изменений!). На вершине всех этих вещей Пипнв Очень медленно Отказ В основном, Pipenv просто делает его хорой, чтобы добавить новые пакеты в ваш проект.
  • 😊 Альтернативные источники: Pipenv делает это хорошо. Просто добавьте свой новый репозиторий в качестве источника в вашем PipFile и ссылаетесь на любые учетные данные с переменными среды. Очень просто.

Виртуальные среды

  • 😌 Настройка: ветерок. Pipenv Sync. Тогда иди сделай кофе. Когда вы вернетесь, у вас будет блестящая новая виртуальная среда, которая все еще устанавливает ваши зависимости, но она взяла только одну команду.
  • 🙂 Использование: Pipenv значительно упрощает рабочий процесс виртуальной среды над Ванильный стек

    • Установка требований: если вы хотите, что было последним проверенным, используйте Pipenv Sync. . Если вы хотите, чтобы последние пакеты, которые соответствуют вашим ограничениям, используйте Pipenv Установить Отказ Я знаю, что я избиваю мертвую лошадь здесь Но трудно преувеличивать, насколько медленным Pipenv – решить и устанавливать пакеты.
    • Бег: Pipenv запустить Python [ваш сценарий]
    • Активация окружающей среды: Pipenv Shell.
    • Деактивировать: дезактивировать

TL; доктор

Все, что вам понравилось о Pipenv, так далеко, в значительной степени выходит из окна, когда речь идет о распространении. Вы должны использовать те же инструменты, что и у ванильного стека, сделанного более сложным, чтобы получить от Pipfile в формат требований Ye Olde.

Строить

  • 😿 Определения: все все еще должно храниться в вашем setup.py даже ваши требования. Это означает, что вы либо должны экспортировать файл требований .txt.txt из вашего pipfile перед каждым сборкой ( которые будут обновлять все ваши зависимости к последней версии, отменив любые тестирование, которые вы только что закончили! ) Или объявляете свои зависимости в вашей настройке. PY-файл и установите свой проект в качестве зависимости в вашем PipFile, в значительной степени вынимая PipFile из процесса и отзываю большую часть особенностей, которые вы получили, выбрав Pipenv.
  • 🙄 здание: точно так же, как и в Ванильный стек

Развертывать

  • 🥵 pypi: Точно так же, как это было в Ванильный стек
  • 🙅 Распределение источника: Хорошо, в последний раз я обещаю. Установка зависимостей с pipenv – Так медленно То, что вы должны просто экспортировать в файл требований и настроить свой сервер старомодный путь. Серьезно, положить Pipenv на сервере не стоит.
  • 😪 Предварительные зависимости: это так же, как Ванильный стог Но теперь с добавленным шагом экспорта вашего PipFile в файл требований, которые Пип можно использовать.

Если честно, я не уверен, что пиперва стоит того. По моему опыту это заканчивается больше времени, чем спасает, но ваш пробег будет очень. Это технически часть Pypa сейчас, поэтому, надеюсь, они будут улучшать его, но учитывая то, что я прочитал вопросы на GitHub, который кажется маловероятным. Сопровождающие очень яркомыми и не заботятся о том, как другие люди используют инструмент. При выборе стека я бы поставил ясно из Пипенва.

Оригинал: “https://dev.to/dbanty/pipenv-the-newer-dependency-manager-23ga”