Управление окружением Python c Pipenv

ATR

Величайший
PR-group
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ДРУЗЬЯ ФОРУМА

ATR

Величайший
PR-group
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
ДРУЗЬЯ ФОРУМА
Регистрация
30 Июн 2018
Сообщения
2,003
Реакции
722
Репутация
16
Привет, мой друг!

Предположу, что для управления Python окружением в вашем проекте до сих пор используется pip и virtualenv.
Если это так, то позволь рассказать о таком инструменте, как Pipenv.

Pipenv — это современный инструмент для управления рабочим окружением в Python.

Основные возможности pipenv:
  • Создание и управление виртуальным окружением
  • Синхронизация пакетов в Pipfile при установке и удалении пакетов
  • Автоматическая подгрузка переменных окружения из .env файла
Начало работы

Установим последнюю версию pipenv:

Управление рабочим окружением

Перейдем в каталог с Python проектом и создадим виртуальное окружение:

$ cd yourproject
$ pipenv shell
Команда автоматически создаст новое виртуальное окружение для вашего проекта, если он еще не существует.

Также, при создании окружения можно указать версию интерпретатора с помощью флага --python, например:

$ pipenv shell --python 3.7
Выход из оболочки виртуального окружения осуществляется с помощью команды exit:

Управление зависимостями приложения

Для установки пакетов воспользуемся командой install:

Pipenv установит последнюю версию пакета Flask и автоматически добавит его в Pipfile.

При установке можем задать конкретную версию пакета:

$ pipenv install Flask==1.0.2
Разработчики данного инструмента позаботились и о работе со средой разработки — пакетами, которые необходимы на этапе сборки или тестирования приложений.

При указании флага --dev, пакет будет установлен как часть среды разработки:

$ pipenv install pytest --dev
Чтобы установить все пакеты, включая пакеты среды разработки необходимо выполнить:

Для удаление пакетов существует команда uninstall:

Сведения об установленных пакетах и их зависимостях хранятся в файле Pipfile.lock, который генерируется автоматически и не должен быть изменен пользователем.

Запуск исходного кода

Существует возможность запуска исходного кода внутри оболочки virtualenv:

$ pipenv run python yourapplication.py
При наличии файла .env команды $ pipenv shell и $ pipenv run, автоматически подгрузят из него переменные окружения:

$ cat .env
DEBUG=1

$ echo $DEBUG
1
Развертывание приложения

Pipenv позволяет устанавливать зависимости в родительскую систему при указании флага --system:

Это полезно при развертывания приложений в Docker.

При указании флага --deploy — pipenv выдаст ошибку, если Pipfile.lock устарел или версия Python не соответсвует указанной.

Пример Dockerfile для работы с pipenv:

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 . .
Пример приложения на Flask с использованием возможностей Pipenv:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.

fdhadzh
 
Сверху