Какой вариант использования pipenv? - PullRequest
0 голосов
/ 01 мая 2018

Я читаю об этом новом блестящем инструменте под названием pipenv и не могу понять, каков вариант использования этого инструмента.

  1. Для создания пакета мне все еще нужно поддерживать setup.py и requirements.txt.
  2. Для создания сред разработки мне, скорее всего, все еще нужны tox и virtualenv.
  3. Для создания пакетов или колес мне все еще нужно использовать pip, потому что разработчикам pipenv не нужна эта функция

Так в чем же смысл еще один инструмент и файлы конфигурации с другим синтаксисом? Какую проблему решает pipenv

1 Ответ

0 голосов
/ 04 июня 2018

Все функции setup.py, tox, requirements, virtualenv и т. Д. Имеют решающее значение для того, кто распространяет библиотеку, которую необходимо собрать и протестировать для нескольких версий Python и, возможно, для нескольких версий их требования.

В документах упоминается это , но я повторюсь. Pipenv предназначен для разработчиков приложений и поставщиков услуг. В этих случаях вы обычно создаете одну конфигурацию и активно обновляете свой набор версий. Кроме того, вы должны иметь возможность легко выполнить откат к предыдущей версии.

То, что вы получили с requirements.txt, было закреплением версии, так что вы могли откатиться назад, но pip никогда не навязывал согласованность версий, поэтому вы могли создать requirements.txt, который имел противоречивые версии. Это python, так что большую часть времени вы можете обойтись без него, но наличие согласованных версий смягчает этот класс проблем.

pip-tools может создавать согласованные наборы версий, но теперь вы имеете дело с тремя отдельными утилитами: pip, pip-tools и virtualenv. Это замечательно, если все всегда стараются запустить все три, чтобы держать вещи в курсе, и, конечно, они не делают.

То, что добавляет pipenv, объединяет управление всеми тремя из них и обеспечивает постоянную согласованность версий.

Если вы делаете что-то столь же простое, как git checkout, все, что вам нужно сделать, это запустить pipenv sync --dev, чтобы обновить свой virtualenv.

С помощью pip вам придется полностью уничтожить virtualenv и повторно запустить pip install, так как pip не удалит существующие пакеты.

Если вы настроили свой Pip-файл на "yourpackage" = {path=".", editable=true}, то вы можете обновить требование в setup.py и pipenv update, чтобы обеспечить соответствующее обновление вашего virtualenv или сообщить об ошибке.

Для ясности, нет ни одного варианта использования, который бы обрабатывался одним pipenv; Вы можете сделать это с другими инструментами. Но он имеет в виду аудиторию, разработчиков приложений, и отличается тем, что предоставляет пользователям гораздо более согласованный опыт. Я также обнаружил, что на практике это также полезно для разработки библиотек, поскольку набор тестов сам по себе является приложением.

...