Astra linux install pipenv

Pipenv — современный менеджер зависимостей для Python-проектов

Pipenv — менеджер зависимостей для Python-проектов. С его помощью можно создавать виртуальные среды и управлять зависимостями приложений. Pipenv решает ряд проблем, которые возникали при использовании pip, virtualenv и requirements.txt.

Данный инструмент аналогичен npm у NodeJS, или composer у PHP, и является официально рекомендуемым менеджером зависимостей для Python . Подробнее о том, кому он будет полезен и как им пользоваться, рассмотрим ниже.

Чем хорош Pipenv

Рано или поздно, каждый разработчик сталкивается с проблемой контроля версий пакетов pip и настройкой виртуального окружения. С помощью Pipenv вы можете:

  • Управлять окружениями ( env );
  • Управлять пакетами: устанавливать, удалять, обновлять ( pip );
  • Устанавливать детерминированный набор пакетов ( Pipfile.lock ).

⚡ Можно забыть про pip и virtualenv. Вам больше не нужно использовать pip и virtualenv по отдельности. В pipenv этот функционал реализован «из коробки».

⚡ Requirements.txt больше не нужен. Для своей работы менеджер использует 2 файла: Pipfile (по сути замена requirements.txt) и Pipfile.lock (связывает версии пакетов, тем самым обеспечивая дополнительную безопасность).

Когда вы запускаете проект с Pipenv, он автоматически создает виртуальную среду для текущего проекта, даже если вы еще не используете ее. Pipenv управляет зависимостями, отказавшись от привычного requirements.txt , и заменяя его на новый документ под названием Pipfile . Когда вы устанавливаете библиотеку с помощью Pipenv, файл Pipfile для проекта автоматически обновляется с указанием сведений об этой установке, включая информацию о версии, расположение хранилища Git, путь к файлу и другую информацию.

[[source]] name = «pypi» url = «https://pypi.org/simple» verify_ssl = true [dev-packages] [packages] questionary = «*» [requires] python_version = «3.7»

Ваше приложение может зависеть от конкретной версии библиотеки, а эта библиотека может зависеть от конкретной версии другой библиотеки. Если производить настройку вручную, во всем этом очень просто запутаться 🤷. Pipenv создан, чтобы облегчить эту задачу. Он отслеживает дерево взаимозависимостей вашего приложения в файле с именем Pipfile.lock В свою очередь, Pipfile.lock также проверяет, используются ли корректные версии зависимостей.

Читайте также:  Arm device tree linux

Pipenv удобен, когда над проектом работают несколько разработчиков. Рассмотрим простой пример — компания ведет разработку своего корпоративного сайта. Мария работает над вкладкой «Отчеты», Иван — над вкладкой «Чат».

  • Для того чтобы отчеты создавались быстрее, Мария решает обновить некоторые питон-библиотеки.
  • В течение 2-х дней она разрабатывает новый функционал для отчетов.
  • Мария фиксирует изменения в git репозитории, но забывает запустить pip freeze . Файл requirements.txt остается в репозитории со старыми версиями библиотек.
  • Иван затягивает из репозитория изменения Марии, и внезапно выясняется, что его вкладка «Чат» стала выпадать с ошибкой.
  • Помимо этого, CI сборка тоже сломалась 😢

Требуется время, чтобы понять, что проблема в файле requirements.txt , где находятся старые версии библиотек.

Если бы Иван и Мария использовали Pipenv, Pipfile был бы автоматически обновлен и включен в коммит Марии. Они бы сэкономили время и завершили свой продукт быстрее. Вот что делает Pipenv таким важным.

⚡ Возможность создавать собственные шорткаты. Pipenv позволяет создавать собственные шорткаты (сокращения) в секции [scripts] файла Pipfile :

[scripts] print_hello = «python -c \»print(‘Hello’)\»»

Теперь в консоли вы можете вызвать шорткат командой pipenv run print_hello

⚡ Автоматизация рутинных задач. Больше не придется тратить время на выполнение рутинных задач, выискивая причины отсутствия синхронизации и возникновения ошибок в версиях. Всю рутинную работу pipenv берет на себя:

  • автоматически генерирует Pipfile ;
  • автоматически удаляет/добавляет записи в Pipfile при установке/удалении пакетов;
  • автоматически создает virtualenv;
  • автоматически подгружает данные из .env файлов и т.д.

Установка

Самый простой вариант — установка с помощью pip.

Для Linux и MacOS есть альтернативный способ установки:

После установки, вы можете фактически забыть о pip — pipenv по сути заменяет pip и virtualenv.

Пример использования

Рассмотрим простой пример использования pipenv.

Создаем виртуальную среду

Для инициализации виртуальной среды Python 3, выполните команду:

Если виртуальной среды еще не существует, она будет создана.

💭 Также вы можете принудительно создать среду Python 3 или Python 2. Для этого нужно выполнить команды pipenv —three или pipenv —two .

Устанавливаем пакеты

Далее можно установить сторонний пакет. Существует 3 варианта установки:

Вариант #1 . Указываем пакет, который нужно установить

Читайте также:  Spotify install on linux

Установится последняя версия пакета. При этом в Pipfile добавится запись scrapy = «*»

Вариант #2 . Не указываем пакет (установка пакетов из Pipfile)

Установятся все пакеты из Pipfile и обновится Pipfile.lock

Вариант #3 . Не указываем пакет (установка пакетов из Pipfile.lock)

Установятся все пакеты из Pipfile.lock

Запускаем скрипты

Запустить python-скрипты можно несколькими способами:

Способ #1 . Активируем виртуальное окружение командой pipenv shell , далее выполняем python script-name.py

Способ #2 . Запустить скрипт сразу внутри оболочки virtualenv можно командой:

pipenv run python script-name.py

Настройка pipenv в PyCharm

Процесс настройки pipenv в PyCharm:

  1. В настройках откройте вкладку » Project Interpreter » — File > Settings > Project: ProjectName > Project Interpreter.
  2. Нажмите на шестеренку рядом с выпадающим списком и выберите » Add «.
  3. В списке слева выберите » Pipenv Environment «.
  4. Далее вы можете создать новое окружение » New environment » или использовать существующее » Existing environment «.

После того как все шаги выполнены, для текущего проекта устанавливается новая среда pipenv и устанавливаются пакеты, перечисленные в Pipfile.

Если вы открываете какой-либо проект с добавленным файлом Pipfile, но в нем не настроен интерпретатор, PyCharm предложит вам использовать среду Pipenv. Если вы выберете эту опцию, PyCharm автоматически установит для вас pipenv.

Если PyCharm покажет сообщение об ошибке: Pipenv executable is not found , введите правильный путь к исполняемому файлу в настройках » Pipenv Environment «, например: C:\Users\jetbrains\AppData\Roaming\Python\Python37\Scripts\pipenv.exe (Windows).

Команды pipenv

  • pipenv shell — активация виртуального окружения;
  • exit — выход из виртуального окружения;
  • pipenv check — проверка на наличие уязвимостей безопасности.
  • pipenv install — установка всех пакетов из Pipfile ;
  • pipenv install scrapy==1.8.0 — установит фиксированную версию пакета;
  • pipenv install selenium —dev — установит selenium как пакет только для разработки;
  • pipenv install —system — установка зависимостей в родительскую систему;
  • pipenv uninstall scrapy — удаление пакета;
  • pipenv uninstall —all — удаление всех установленных пакетов в виртуальной среде.
  • pipenv lock — генерация Pipfile.lock ;
  • pipenv sync — установка пакетов из Pipfile.lock ;
  • pipenv clean — удаление из virtualenv всех пакетов, которых нет в Pipfile.lock .
  • pipenv —where — путь до текущий проект;
  • pipenv —venv — путь до virtualenv;
  • pipenv —py — путь до интерпретатора;
  • pipenv graph — отображение графа зависимостей.
Читайте также:  Chmod linux смена пользователя

Pipenv и Docker

Способ #1 . Простой способ использовать pipenv в сборке Docker — экспортировать файл require.txt. Вы можете сделать это вне сборки Docker, и просто передать полученный файл в систему управления версиями, а затем использовать Dockerfile. Выполнить это можно следующим образом:

pipenv lock —requirements > requirements.txt

Плюс в том, что Dockerfile не нужно ничего знать о pipenv. Иначе, это потребовало бы обновлять файл require.txt при каждом обновлении Pipfile.lock .

В качестве альтернативы можно выполнить экспорт в самой сборке:

FROM python:3.7 RUN pip install pipenv COPY Pipfile* /tmp RUN cd /tmp && pipenv lock —requirements > requirements.txt RUN pip install -r /tmp/requirements.txt COPY . /tmp/myapp RUN pip install /tmp/myapp CMD flask run exampleapp:app

Способ #2 . Второй вариант связан с использованием дополнительных флагов при установке пакетов.

pipenv install —deploy —system

—deploy — pipenv выдаст ошибку если Pipfile.lock устарел, вместо того, чтобы сгенерировать новый Pipfile.lock файл.

—system — устанавливать зависимости в родительскую систему.

Рассмотрим пример Dockerfile для развертывания Flask приложения:

FROM python:3.7 RUN pip3 install pipenv WORKDIR /usr/src/app COPY Pipfile ./ COPY Pipfile.lock ./ RUN set -ex && pipenv install —deploy —system COPY . . EXPOSE 8000 CMD [ «gunicorn», «-b0.0.0.0:8000», «wsgi:app» ]

Конфигурирование pipenv

Pipenv дает возможность конфигурировать свое поведение с помощью переменных окружения ( Environment Variables ). Просто создайте переменную и pipenv обнаружит её. Вот некоторые их них:

  • PIPENV_VENV_IN_PROJECT — создаст виртуальное окружение .venv в папке с проектом;
  • PIPENV_YES — автоматически соглашаться со всеми диалогами;
  • PIPENV_DONT_LOAD_ENV — не загружать файл .env;
  • PIPENV_INSTALL_TIMEOUT — максимальное время ожидания установки пакета (сек.);
  • PIPENV_MAX_SUBPROCESS — количество подпроцессов, используемых во время установки;
  • PIPENV_PIPFILE — путь до файла Pipfile .

Полный список переменных можно посмотреть через pipenv —envs :

Официальная документация по конфигурированию pipenv — » Configuration With Environment Variables «. Расшифровка некоторых переменных тут .

Стоит ли использовать Pipenv?

Определенно да! 🎉 Pipenv сведет всю работу по управлению пакетами и виртуальным окружением в одну консоль, решит проблему с версионированием пакетов и добавит новый, весьма приятный функционал.

Источник

Оцените статью
Adblock
detector