Управление окружением Python c Pipenv
- суббота, 7 июля 2018 г. в 09:06:09
Привет, мой друг!
Предположу, что для управления Python окружением в вашем проекте до сих пор используется pip и virtualenv.
Если это так, то позвольте рассказать о таком инструменте, как Pipenv.
Pipenv — это современный инструмент для управления рабочим окружением в Python.
Основные возможности pipenv:
В качестве показательного примера сравним использование pip и virtualenv с pipenv для создания виртуального окружения:
pip и virtualenv
$ virtualenv venv
$ source venv/bin/activte
$ pip install Flask gunicorn
$ pip freeze > requirements.txtpipenv
$ pipenv install Flask gunicornУстановим последнюю версию pipenv:
$ pip install pipenvПерейдем в каталог с Python проектом и создадим виртуальное окружение указав версию интерпретатор:
$ cd yourproject
$ pipenv --python 3.7Команда автоматически создаст новое виртуальное окружение для вашего проекта, если он еще не существует.
Активировать виртуальное окружение проекта можно выполнив команду shell:
$ pipenv shellВыход из оболочки виртуального окружения осуществляется с помощью команды exit:
$ exitДля установки пакетов воспользуемся командой install:
$ pipenv install FlaskPipenv установит последнюю версию пакета Flask и автоматически добавит его в Pipfile.
При установке можем задать конкретную версию пакета:
$ pipenv install Flask==1.0.2Разработчики данного инструмента позаботились и о работе со средой разработки — пакетами, которые необходимы на этапе сборки или тестирования приложений.
При указании флага --dev, пакет будет установлен как часть среды разработки:
$ pipenv install pytest --devЧтобы установить все пакеты, включая пакеты среды разработки необходимо выполнить:
$ pipenv install --devДля удаление пакетов существует команда uninstall:
$ pipenv uninstall FlaskСведения об установленных пакетах и их зависимостях хранятся в файле Pipfile.lock, который генерируется автоматически и не должен быть изменен пользователем.
Существует возможность запуска исходного кода внутри оболочки virtualenv:
$ pipenv run python yourapplication.pyПри наличии файла .env команды $ pipenv shell и $ pipenv run, автоматически подгрузят из него переменные окружения:
$ cat .env
DEBUG=1
$ echo $DEBUG
1Pipenv позволяет устанавливать зависимости в родительскую систему при указании флага --system:
$ pipenv install --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: github.com/fdhadzh/flask-pipenv-example.