В этой короткой записи мы собираемся исследовать Pipenv – инструмент, который стремится принести лучшие экосистемы более широкого пакета в Python.
Почему Пипнв?
Первые две строки на проекте сделают его идеально.
Pipenv – это инструмент, который направлен на то, чтобы принести лучшие из всех упаковочных миров (Bundler, Composer, NPM, груз, пряжу и т. Д.) в мир Python. Windows – это гражданин первого класса, в нашем мире.
Он автоматически создает и управляет VirtualenV для ваших проектов, а также добавляет/удаляет пакеты из вашего PipFile при установке/удалении пакетов. Он также генерирует вечно важную Pipfile.lock, который используется для производства детерминированных сборки.
Pipenv позволяет поддерживать проектные зависимости между различными настройками в синхронизации – следовательно, детерминированные
сборки. Управляя Виртуальский
Для вас это лечит разные проекты Pipenv, у вас есть отдельные с отдельными зависимостями – аналогично тому, что вы ожидаете, что эти другие менеджеры по пакетам для других языков, упомянутых выше (то есть Bundler для Ruby, NPM/пряжа для Nodejs, Composer для PHP, Cargo для ржавчины).
Некоторые из других проблем, которые IT-адрес также указан на их Github. Слово для слов, это список:
- Вам больше не нужно использовать PIP и Virtualenv отдельно. Они работают вместе.
- Управление файлом требований. Atxt может быть проблематичным, поэтому Pipenv вместо этого использует предстоящий PipFile и PIPFile.lock, который превосходит для базовых случаев использования.
- Хэши используются везде, всегда. Безопасность. Автоматически подвергать уязвимости безопасности.
- Дайте вам представление о вашем графике зависимости (например, \ $ Pipenv Graph).
- Оптимизация рабочего процесса разработки по загрузке
.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
Отказ
В следующий раз мы пойдем в дальнейшем запущении некоторых прохладных проектов.
Ресурсы и дальнейшее чтение
- Завершенный проект
- Руководство пользователя Python упаковка
- Рекомендации инструмента
- пиронв
- PIPENV УСТАНОВКА
- Пипнв – Гадость
- IPython – Github
- Запросы – Гадость
Образ кредита: Климент H.
Первоначально опубликовано на моем блог . Следуй за мной в Twitter для более скрытых драгоценных камней @ dennisokeeffe92. .
Оригинал: “https://dev.to/okeeffed/the-abcs-of-pipenv-and-python-package-management-183i”