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

ABC для управления пакетами Pipenv и Python

В этой короткой записи мы собираемся исследовать Pipenv – инструмент, который стремится принести лучшее из широкого … Tagged с начинающими, Python, Tulciory.

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

Почему Пипнв?

Первые две строки на проекте сделают его идеально.

Pipenv – это инструмент, который направлен на то, чтобы принести лучшие из всех упаковочных миров (Bundler, Composer, NPM, груз, пряжу и т. Д.) в мир Python. Windows – это гражданин первого класса, в нашем мире.

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

Pipenv позволяет поддерживать проектные зависимости между различными настройками в синхронизации – следовательно, детерминированные сборки. Управляя Виртуальский Для вас это лечит разные проекты Pipenv, у вас есть отдельные с отдельными зависимостями – аналогично тому, что вы ожидаете, что эти другие менеджеры по пакетам для других языков, упомянутых выше (то есть Bundler для Ruby, NPM/пряжа для Nodejs, Composer для PHP, Cargo для ржавчины).

Некоторые из других проблем, которые IT-адрес также указан на их Github. Слово для слов, это список:

  1. Вам больше не нужно использовать PIP и Virtualenv отдельно. Они работают вместе.
  2. Управление файлом требований. Atxt может быть проблематичным, поэтому Pipenv вместо этого использует предстоящий PipFile и PIPFile.lock, который превосходит для базовых случаев использования.
  3. Хэши используются везде, всегда. Безопасность. Автоматически подвергать уязвимости безопасности.
  4. Дайте вам представление о вашем графике зависимости (например, \ $ Pipenv Graph).
  5. Оптимизация рабочего процесса разработки по загрузке .env файлы.

Второй момент на требования .txt Файл может выглядеть незнакомым для New-Geers в Python, но это еще один способ, которым проекты Python пытаются оптимизировать использованные пакеты.

Установка

Есть несколько способов установки пиронв :

# Brew
brew install pipenv
# Debian Buster +
sudo apt install pipenv
# Fedora
sudo dnf install pipenv
# FreeBSD
pkg install py36-pipenv
# When none of the above is available
pip install pipenv

Вы можете увидеть больше деталей здесь Отказ

Настройка двух основных проектов для демонстрации

Давайте создадим новую папку для размещения проекта, который мы будем управлять Pipenv.

В каждом, мы установим iPython Какая альтернативная интерактивная среда для игры с.

Тогда мы будем использовать Запросы Пакет, который является простым пакетом Python для создания запросов. Мы не будем слишком глубоко в пакет – это в основном для демонстрации того, как работает установка и настройка среды.

Запустите следующее из того, где вы хотите настроить проект в вашем терминале. Я рекомендую открыть две разные вкладки.

# in tab one in the directory where you want to setup the project
mkdir -p hello-pipenv
cd hello-pipenv
pipenv --three
pipenv install --dev ipython

Вы можете инициализировать новую виртуальную среду Python3, запустив Пипенв - Три Отказ Для Python2 вы можете запустить Pipenv --two Отказ

После настройки мы можем запустить Pipenv Установите <Пакет> Чтобы установить пакет, который нам нужен. Этот же звонок может быть запущен как Pipenv Установить --dev Для пакетов нам нужно только установить, чтобы помочь с разработкой (указано флагом -dev ).

Запуск простых запросов GET от iPython

Чтобы открыть интерактивную среду iPython, мы можем запустить Пипенв бежит iPython Отказ

Как только он работает, вы должны получить что -то вроде следующего:

Python 3.7.7 (default, Mar 10 2020, 15:43:03)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Благодаря Пипнву, iPython уже знает, что мы бегаем Python 3.7.7 Отказ

Оказавшись в реплике, давайте попробуем следить за примером из Запросы на страницу GitHub Для импорта запросов:

In [1]: import requests
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
 in 
----> 1 import requests

ModuleNotFoundError: No module named 'requests'

Э-э-э-э! Эта ошибка отображается, потому что мы еще не установили Запросы Для проекта!

Мы можем исправить это, запустив Выход Чтобы оставить ipython и установить пакет, запустив Запросы на установку Pipenv Отказ После установки загрузите iPython снова и запустите ту же линию.

На этот раз не должно быть ошибки, когда мы запускаем Запросы на импорт Так что давайте перейдем и запустите запрос на Google в Google и назначить его переменной R Бег r.get ('https://google.com') Отказ

Если мы успешны, мы можем просто поставить R и нажмите Enter, и мы увидим, что R относится к объекту ответа <Ответ [200]> Отказ

Затем мы можем получить доступ к свойствам, чтобы увидеть такие вещи, как код состояния, текст и т. Д.

In [1]: import requests

In [2]: r = requests.get('https://google.com')

In [3]: r
Out[3]: 

In [4]: r.status_code
Out[4]: 200

In [5]: r.text
Out [5]: # A lot of HTML text

Удивительно! Нам успешно удалось установить пакет в наш проект и запустить его через Python Repl!

PipFile.

Как только мы установили наши пакеты, вы бы заметили Pipfile и Pipfile.lock был сгенерирован.

Во-первых, глядя на PipFile, мы видим:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
ipython = "*"

[packages]
requests = "*"

[requires]
python_version = "3.7"

Этот файл – это то, что помогает другим, кто запускает проект, сохранить его детерминированным образом. Вот где мы блокируем версию Python, мы используем, а также упомяну о разработке и производственных пакетах, необходимых для запуска этого приложения. С "*" Рядом с пакетами мы в настоящее время говорим Pipenv устанавливать последние. Мы можем обновить это для блокировки конкретных версий, которые мы хотим.

Pipfile.lock

Если вы запустите Cat PipeFile.lock Увидим, что есть куча JSON с версиями и информацией Hash.

Эти Lockfiles используются для обеспечения того, чтобы установленные пакеты и их зависимости все остаются в синхронизации.

Это помогает избежать риска модернизации пакетов, которые зависят друг от друга и непреднамеренно нарушать дерево зависимостей вашего проекта.

Вы можете использовать Pipenv Lock Чтобы заблокировать установленные в настоящее время пакеты в проекте.

Вывод

Это была короткая запись в установке пакетов, используя Пипнв и видеть их в действии в интерактивной среде iPython Отказ

В следующий раз мы пойдем в дальнейшем запущении некоторых прохладных проектов.

Ресурсы и дальнейшее чтение

  1. Завершенный проект
  2. Руководство пользователя Python упаковка
  3. Рекомендации инструмента
  4. пиронв
  5. PIPENV УСТАНОВКА
  6. Пипнв – Гадость
  7. IPython – Github
  8. Запросы – Гадость

Образ кредита: Климент H.

Первоначально опубликовано на моем блог . Следуй за мной в Twitter для более скрытых драгоценных камней @ dennisokeeffe92. .

Оригинал: “https://dev.to/okeeffed/the-abcs-of-pipenv-and-python-package-management-183i”