Привет, мой друг!
Предположу, что для управления Python окружением в вашем проекте до сих пор используется pip и virtualenv.
Если это так, то позвольте рассказать о таком инструменте, как Pipenv.
Pipenv — это современный инструмент для управления рабочим окружением в Python.
Основные возможности pipenv:
- Создание и управление виртуальным окружением
- Синхронизация пакетов в Pipfile при установке и удалении пакетов
- Автоматическая подгрузка переменных окружения из .env файла
В качестве показательного примера сравним использование pip и virtualenv с pipenv для создания виртуального окружения:
- pip и virtualenv
«$ virtualenv venv $ source venv/bin/activte $ pip install Flask gunicorn $ pip freeze > requirements.txt» - pipenv
«$ pipenv install Flask gunicorn»
Содержание[Скрыть]
Начало работы
Установим последнюю версию pipenv:
1 |
$ pip install pipenv |
Управление рабочим окружением
Перейдем в каталог с Python проектом и создадим виртуальное окружение указав версию интерпретатор:
1 2 |
$ cd yourproject $ pipenv --python 3.7 |
Команда автоматически создаст новое виртуальное окружение для вашего проекта, если он еще не существует.
Активировать виртуальное окружение проекта можно выполнив команду shell:
1 |
$ pipenv shell |
Выход из оболочки виртуального окружения осуществляется с помощью команды exit:
1 |
$ exit |
Управление зависимостями приложения
Для установки пакетов воспользуемся командой «install»:
1 |
$ pipenv install Flask |
Pipenv установит последнюю версию пакета «Flask» и автоматически добавит его в Pipfile.
При установке можем задать конкретную версию пакета:
1 |
$ pipenv install Flask==1.0.2 |
Разработчики данного инструмента позаботились и о работе со средой разработки — пакетами, которые необходимы на этапе сборки или тестирования приложений.
При указании флага —dev, пакет будет установлен как часть среды разработки:
1 |
$ pipenv install pytest --dev |
Чтобы установить все пакеты, включая пакеты среды разработки необходимо выполнить:
1 |
$ pipenv install --dev |
Для удаление пакетов существует команда «uninstall»:
1 |
$ pipenv uninstall Flask |
Сведения об установленных пакетах и их зависимостях хранятся в файле Pipfile.lock, который генерируется автоматически и не должен быть изменен пользователем.
Запуск исходного кода
Существует возможность запуска исходного кода внутри оболочки virtualenv:
1 |
$ pipenv run python yourapplication.py |
При наличии файла .env команды $ pipenv shell и $ pipenv run, автоматически подгрузят из него переменные окружения:
1 2 3 4 |
$ cat .env DEBUG=1 $ echo $DEBUG |
Развертывание приложения
Pipenv позволяет устанавливать зависимости в родительскую систему при указании флага —system:
1 |
$ pipenv install --system |
Это полезно при развертывания приложений в Docker.
При указании флага —deploy — pipenv выдаст ошибку, если Pipfile.lock устарел или версия Python не соответсвует указанной.
Пример Dockerfile для работы с pipenv:
1 2 3 4 5 6 7 8 9 10 11 12 |
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 . . |
Ваш комментарий будет первым