Как управлять пакетами Python с помощью Pipenv
На днях мы опубликовали руководство для начинающих по управлению пакетами Python с помощью PIP. В этом руководстве мы обсудили, как установить pip, а также как устанавливать, обновлять и удалять пакеты Python с помощью pip. Мы также обсудили важность виртуальных сред и способы создания виртуальной среды с помощью инструментов venv и virtualvnv. Сегодня мы узнаем о другом менеджере пакетов Python под названием pipenv. Это новый инструмент упаковки Python, рекомендованный Python.org. Его можно использовать для простой установки и управления зависимостями Python без необходимости создания виртуальных сред. Pipenv автоматически создает виртуальную среду для ваших проектов и управляет ею. Он также добавляет/удаляет пакеты из вашего Pipfile при установке/удалении пакетов.
Почему Пипенв?
Pipenv решает следующие проблемы в реальном времени:
- Вам больше не нужно создавать виртуальную среду. Pipenv автоматически создаст virtualenv для ваших проектов. Проще говоря, pip и virtualenv работают вместе.
- Управление файлом requirements.txt может быть проблематичным, поэтому Pipenv вместо этого использует будущие Pipfile и Pipfile.lock, которые лучше подходят для базовых случаев использования.
- Это безопасно. Хэши используются везде и всегда. Автоматически выявляйте уязвимости безопасности.
- Просматривайте график зависимостей в любое время.
- Оптимизируйте рабочий процесс разработки, загружая файлы .env.
Что ж, давайте начнем.
Установите Pipenv в Linux
Существует много способов установки Pipenv. Мы увидим два официально рекомендуемых метода.
1. Установка Pipenv с помощью pip
Официальный рекомендуемый способ — использовать pip. Убедитесь, что у вас установлены Python и pip. Если нет, обратитесь к нашему предыдущему руководству, указанному в первом абзаце этой статьи.
После установки pip выполните следующую команду, чтобы установить Pipenv.
pip install --user pipenv
Эта команда установит Pipenv на уровне пользователя (т. е. не на уровне всей системы). Если после установки Pipenv недоступен в вашей оболочке, вам может потребоваться добавить двоичный каталог базы пользователей в ваш PATH. Если вы не знаете, какая у вас база пользователей, выполните следующую команду, чтобы узнать это:
python -m site --user-base
Вы увидите результат, подобный приведенному ниже.
/home/sk/.local
Как вы можете видеть в приведенном выше выводе, мой базовый каталог пользователя — /home/sk/.local, а двоичный каталог моей базы — /home/sk/.local/bin. >. Прозрачный? Хороший. Теперь добавьте это в свой PATH. Для этого отредактируйте файл ~/.profile:
vi ~/.profile
Добавьте эту строку в конце:
export PATH="$HOME/.local/bin:$PATH"
Нажмите клавишу ESC и введите :wq, чтобы сохранить и выйти из файла. Затем выполните следующую команду, чтобы изменения вступили в силу.
source ~/.profile
Наконец, выполните следующую команду:
pipenv --update
Чтобы обновить Pipenv в любое время, выполните следующую команду:
pip install --user --upgrade pipenv
2. Установка Pipenv с помощью Pipsi
Pipsi — мощный инструмент, позволяющий устанавливать сценарии Python в изолированные виртуальные среды.
Чтобы установить pipsi, запустите:
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python
Следуйте инструкциям на экране, вам придется обновить PATH.
После установки pipsi выполните следующие команды для установки Pipenv:
pipsi install pew
pipsi install pipenv
Наконец, выполните следующую команду:
pipenv --update
Чтобы обновить Pipenv в любое время, просто запустите:
pipsi upgrade pipenv
Управление пакетами Python с помощью Pipenv
Запустите «pipenv» в своей оболочке, чтобы отобразить список доступных команд и общих параметров.
pipenv
Пример вывода будет:
Установка пакетов
Создайте новый проект или перейдите в каталог существующего проекта.
mkdir myproject
cd myproject
Установите пакеты для вашего проекта:
pipenv install requests
Когда вы ls войдете в каталог своего проекта (т.е. в данном случае myproject), вы увидите два файла, а именно: Pipfile и Pipfile.lock. Pipfile содержит информацию о недавно установленном пакете, такую как имя, версия и т. д. Вы можете использовать этот Pipfile, чтобы отслеживать, какие зависимости потребуются вашему проекту, когда вы захотите повторно его обновить. установите или поделитесь проектом с другими.
cat Pipfile
Pipfile.lock содержит информацию о вашей системе, все зависимости установленного пакета, включая его версию, а также все хеши для всех установленных пакетов и их зависимостей.
cat Pipfile.lock
Теперь установите другой пакет и еще раз проверьте содержимое двух файлов. Вы заметите, что Pidfile теперь содержит два пакета. Кроме того, Pidfile.lock содержит все зависимости установленных пакетов, включая их версии, а также все хеши для всех установленных пакетов и их зависимостей. Проще говоря, эти два файла будут обновляться автоматически каждый раз, когда вы устанавливаете новый пакет.
Ты заметил? Я не создавал никаких виртуальных сред. Pipenv автоматически создал виртуальную среду для моего проекта. Хотите знать, где хранятся ваши проекты? Просто запустите эту команду, чтобы узнать местоположение вашей виртуальной среды.
pipenv --venv
/home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
Чтобы просмотреть домашние сведения о вашем проекте, запустите:
pipenv --where
/home/sk/myproject
Как вы можете видеть в обоих выходных данных, "/home/sk/myproject" — это домашний каталог моего проекта, а "/home/sk/.local/share/virtualenvs/myproject-x7-2XYPN " — это моя виртуальная среда.
Вы можете «ls» войти в свою виртуальную среду, чтобы проверить, что там.
ls /home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
Обновление пакетов
Чтобы обновить все пакеты, запустите:
pipenv update
Эта команда удалит все пакеты и переустановит пакеты до последних совместимых версий.
Проверка целостности посылки
Вы беспокоитесь, есть ли какие-либо уязвимости безопасности в установленных пакетах? Без проблем! Pipenv поддержит вас. Чтобы проверить целостность пакетов, просто выполните следующую команду:
pipenv check
Checking PEP 508 requirements…
Passed!
Checking installed package safety…
All good!
Приведенная выше команда проверяет наличие уязвимостей безопасности и маркеров PEP 508, представленных в Pipfile.
Посмотреть график зависимостей
Давайте запустим Pipenv Graph и посмотрим, что произойдет.
pipenv graph
Как видите, эта команда отображает граф зависимостей.
Удалить пакет
Чтобы удалить пакет, запустите:
$ pipenv uninstall requests
Un-installing speedtest-cli…
Uninstalling speedtest-cli-1.0.7:
Successfully uninstalled speedtest-cli-1.0.7
Removing speedtest-cli from Pipfile…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (c23e27)!
Чтобы удалить все, запустите:
$ pipenv uninstall --all
Un-installing all packages from virtualenv…
Found 1 installed package(s), purging…
Environment now purged and fresh!
Для получения более подробной информации запустите:
pipenv -h
Или,
pipenv --man
Насколько я тестировал, использовать Pipenv гораздо проще, чем pip. Поскольку Python.org официально рекомендует его, теперь вы можете полностью избавиться от venv и virtualenv при установке пакетов Python.
Рекомендуем прочитать:
- Pipx – установка и запуск приложений Python в изолированных средах
Ресурсы:
- Страница Pipenv на GitHub
- Сайт Pipenv