Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

Пересмотр упаковки кода Python с помощью Pipenv

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)

Обзор

Python - один из самых дружественных, но самых мощных языков. Новичкам легко его освоить, но он обладает сильным ударом и широко используется в различных областях, таких как научное программирование, программирование веб-приложений и DevOps. Но одним из слабых мест Python была его поддержка упаковки сложных приложений и их зависимостей.

За эти годы было много усилий, чтобы улучшить ситуацию. В августе 2017 года я написал учебник о современном состоянии упаковки Python: как писать, упаковывать и распространять библиотеку в Python.

Прошло всего четыре месяца, и в городе появился новый игрок. Pipenv теперь официально рекомендованный инструмент для упаковки PyPA (Python Packaging Authority). Из этого руководства вы узнаете, почему Pipenv значительно улучшает состояние упаковки и общий процесс разработки для разработчиков на Python и как эффективно его использовать.

Python Dev Workflow для людей

Цель Pipenv - улучшить рабочий процесс разработчиков Python, когда дело доходит до управления зависимостями и виртуальными средами. Это еще одна замечательная библиотека от трудолюбивого Кеннета Рейтца, который известен в основном пакетом requests (HTTP для людей), но написал несколько других превосходных пакетов.

Нужен ли нам еще один упаковочный инструмент?

Да! Pipenv берет страницу из современных методов управления пакетами и импортирует их в мир Python.

Установка Pipenv

Вы можете установить Pipenv с помощью команды pip install pipenv. Вы получите хороший результат с Emojis:

$ curl https://github.com/pypa/pipenv/blob/master/get-pipenv.py | python>

<Уровень детализации отличный, и в нем тоже используются приятные цвета. Вот полученный Pipfile:e:

requests = "*". Он использует TOML в качестве формата, который в наши дни является популярным выбором для файлов конфигурации (Rust's Cargo, Python's PEP-518). .

<Файл Pipefile.lock, с другой стороны, представляет собой файл JSON, в котором указаны некоторые метаданные и точные версии (включая хэши) всех рекурсивных зависимостей (зависимостей верхнего уровня и их зависимостей). Вот файл Pipfile.lock:e:

<Если вы хотите увидеть график всех ваших зависимостей, введите: pipenv graphe>

<После того, как вы установили пакет с Pipenv, он становится доступным в вашей виртуальной среде, как и стандартный пакет (так же, как если бы вы установили его с помощью pip). Единственная мера предосторожности заключается в том, что вы должны использовать интерпретатор виртуальной среды. Pipenv предоставляет две полезные команды: run и shell. .

<Вы используете pipenv run python your_programm.py, и вы используете pipenv shell для запуска новой оболочки с вашим интерпретатором Python виртуальной среды. Вот как использовать команду оболочки для запуска интерактивного сеанса Python, который использует пакет установленных запросов, чтобы получить цитату дня из REST API. Виртуальная среда активируется, и при запуске Python используется правильный интерпретатор, где доступны requests.e.

<Если вы хотите перенести существующий проект в файл requirements.txt, Pipenv поможет вам. Запускаем: pipenv install -r <путь/к/requirements.txt>.>.

<Все ваши зависимости будут импортированы в Pipfile. Чтобы фактически установить зависимости и сгенерировать Pipfile.lock, вам нужно выполнить pipenv install. После того, как вы убедились, что все работает должным образом, вы можете удалить свой файл needs.txt.e.

<Если ваш файл needs.txt существует в том же каталоге, в котором вы создаете виртуальную среду, то Pipenv автоматически сгенерирует Pip-файл. Но имейте в виду, что если ваш файл require.txt содержит закрепленные версии, они также будут закреплены в Pipfile. В мире Pipenv закрепление должно происходить в файле Pipfile.lock. Pipenv даст дружеское напоминание:w:

<Вот закрепленная версия в Pipfile, которую рекомендуется изменить на «*»:":

<Давайте установим зависимости сейчас:w:

<Редактируемые зависимостиies
Вы можете указать Pipenv установить путь как редактируемый. Это полезно, когда вы зависите от пакетов, которые вы разрабатываете, и хотите зависеть от вашего исходного пакета, фактически не устанавливая их каждый раз, когда вы вносите изменения. В частности, это полезно для текущего каталога, когда вы активно работаете в нем. Для этого используйте флаги -e и --dev:gs:

У вас должен быть правильный файл setup.py.le.

<Управление вашей средой с помощью Pipenvenv
Вы уже видели многое из того, что Pipenv может сделать для вас. Давайте углубимся в некоторые дополнительные команды и опции.ns.

<Установка пакетовges
Команда pipenv install поддерживает несколько параметров:ns:

    < --dev: Установить как файлы разработки, так и пакеты по умолчанию из Pipfile.lock.ck. < --system: использует команду system pip, а не команду вашего virtualenv.nv. < --ignore-pipfile: игнорировать Pipfile и установить из Pipfile.lock.ck. < --skip-lock: игнорировать файл Pipfile.lock и установить его из файла Pipfile. Кроме того, не записывает файл Pipfile.lock, отражающий изменения в файле Pipfile. e.
В зависимости от вашего рабочего процесса и предпочтений, вы можете использовать один или несколько из этих вариантов в разное время.es.

<Деинсталляция пакетовges
Чтобы удалить зависимость, введите: pipenv uninstall <имя пакета>. Например:le:

Обратите внимание, что мне не нужно было указывать "requests == 2.8.14" при удалении, хотя это было закреплено в Pipfile.le.

<Блокирование зависимостейies
Если вы хотите создать снимок ваших текущих зависимостей (например, перед релизом), используйте команду блокировки. Это ключ к детерминированным и повторяемым сборкам: pipenv lock --pre.e>.

<Удаление виртуальной средыent Pipenv потрясающий, но вы можете время от времени очищать некоторые из ваших виртуальных сред: pipenv - rm.e>.

<Безопасностьity
Pipfile.lock использует некоторые новые улучшения безопасности в pip. По умолчанию файл Pipfile.lock будет создан с хэшами sha256 каждого загруженного пакета. Это позволит pip гарантировать, что вы устанавливаете то, что вы собираетесь делать в скомпрометированной сети, или загружаете зависимости из ненадежной конечной точки PyPI.nt.

Кроме того, Pipenv предоставляет команду check, которая проверяет соответствие PEP 508 - Спецификация зависимостей для пакетов программного обеспечения Python, а также безопасность пакетов:ty:

<Заключениеion Pipenv наконец-то выводит упаковку Python на передний край современной разработки программного обеспечения. Он черпает вдохновение из других успешных систем управления зависимостями, таких как Rust's Cargo и Javascript's Yarn. n.

Он сочетает в себе виртуальные среды и управление пакетами и обеспечивает превосходное взаимодействие с красивыми и красочными информационными сообщениями и неявными лучшими практиками! Я настоятельно рекомендую вам начать использовать Pipenv для управления проектами Python.ts.

Кроме того, не стесняйтесь посмотреть, что у нас есть в наличии для продажи и для изучения на рынке Envato, и не стесняйтесь задавать любые вопросы и предоставлять ценные отзывы, используя канал комментариев ниже.ow.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.