Да, я тебя слышал. PIP – отличный инструмент и существует довольно долгое время. Но в течение 3 лет люди (участники) искали способ улучшить наш опыт управления пакетами. Подумайте о суперспособности композитора, NPM (или лучше, пряжи) в вашем любимом инструменте.
То, что они предлагают, (более или менее) замена для вековых Требования.txt
Файл: Pipfile Анкет
Как я научился перестать беспокоиться и любить Пип (снова)
Новый Pipfile отличается от файла требований старого стиля несколькими способами:
- Он использует Toml синтаксис, чтобы обеспечить большую конфигурацию;
- Он объявляет группы зависимостей (то есть A
по умолчанию
один плюс разработкаодин для ... пакеты разработки), поэтому вам не нужно разделять свои требования на несколько файлов.
Это идет с - PIPFILE.LOCK
Файл, который прикрепляет версии ваших пакетов, в дополнение к некоторому бонусу безопасности.
Давайте посмотрим на минимальный, простой Pipfile:
[[source]] url = 'https://pypi.python.org/simple' verify_ssl = true name = 'pypi' [requires] python_version = '3.6' [packages] flask = '*' [dev-packages] pytest = '*'
Что мы имеем здесь:
- Сначала мы объявляем источник, который будет использовать PIP. Как правило, это будет pypi Анкет
- Затем мы объявляем наше требование к версии Python.
- Наконец, мы объявляем наши пакеты и пакеты разработки.
Ты понял ? Теперь вот пример PIPFILE из официального репозитория на GitHub:
[[source]] url = 'https://pypi.python.org/simple' verify_ssl = true name = 'pypi' [requires] python_version = '2.7' [packages] requests = { extras = ['socks'] } records = '>0.5.0' django = { git = 'https://github.com/django/django.git', ref = '1.11.4', editable = true } "e682b37" = {file = "https://github.com/divio/django-cms/archive/release/3.4.x.zip"} "e1839a8" = {path = ".", editable = true} pywinusb = { version = "*", os_name = "=='nt'", index="pypi"} [dev-packages] nose = '*' unittest2 = {version = ">=1.0,<3.0", markers="python_version < '2.7.9' or (python_version >= '3.0' and python_version < '3.4')"}
Видеть ? С помощью синтаксиса TOML вы можете быть очень специфическими в отношении версии, источника или OS-варианта, которую вы хотите использовать. Обратите внимание, что все версии пакетов не закреплены, даже если это был Предпочтительный способ объявления зависимостей Анкет
PIP собирается поддерживать эту спецификацию в Furure с помощью синтаксиса, такого как PIP установка -p PIPFILE
Анкет Давайте посмотрим, как мы можем использовать все эти волшебные вещи сегодня.
Назад в будущее
Встретиться Pipenv (Да, это еще один проект от Кеннета Рейца, парня, стоящего за httpbin , pep8.org и, да, Запрос )
Pipenv – это текущая предпочтительная реализация Pipfile и позволяет вам управлять виртуальными вариантами, как босс. Он направлен на облегчение и улучшение того, как мы управляем нашими средами Python (A la virtualenvwrapper , но с pip навыки).
Вот простой рабочий процесс:
1- В вашем каталоге проекта создайте свой Virtualenv Анкет Pipenv будет хранить его в централизованном месте вместо вашего проекта Root Directory:
pipenv --three # Yeah, 3 is the way to go
2- Установите некоторые зависимости:
pipenv install flask pipenv install --dev pytest # Notice the --dev flag
3- Используйте свой Virtualenv Анкет Он откроет новую оболочку:
pipenv shell
Обратите внимание, что мы не были в Наша виртуальная команда перед этой командой. Все обрабатывается для нас Pipenv Анкет
С этого момента вы готовы идти. Pipenv поможет вам управлять вашей средой на протяжении всего процесса разработки.
Наконец, вы не должны беспокоиться о проблемах совместимости с вашим сервером развертывания (что, безусловно, все еще использует Как вы читаете это): вы можете генерировать старый старый Требования.txt
Бег:
pipenv lock -r > requirements.txt
Pipenv обрабатывает ваши зависимости, и он даже добавляет некоторые подкрепления безопасности, указав хэш каждого пакета.
Вот и все. Перейти тестируйте Pipenv и скажите мне, что вы думаете!
Ваше здоровье
ПРИМЕЧАНИЕ: Этот пост был первоначально опубликован Середина .
Оригинал: “https://dev.to/djiit/pipfile-and-pipenv–the-future-of-python-dependencies-management-cl6”