Привет, мой друг!
Предположу, что для управления Python окружением в вашем проекте до сих пор используется pip и virtualenv.
Если это так, то позволь рассказать о таком инструменте, как Pipenv.
Pipenv — это современный инструмент для управления рабочим окружением в Python.
Основные возможности pipenv:
Установим последнюю версию pipenv:
Перейдем в каталог с Python проектом и создадим виртуальное окружение:
Также, при создании окружения можно указать версию интерпретатора с помощью флага --python, например:
Для установки пакетов воспользуемся командой install:
При установке можем задать конкретную версию пакета:
При указании флага --dev, пакет будет установлен как часть среды разработки:
Запуск исходного кода
Существует возможность запуска исходного кода внутри оболочки virtualenv:
Pipenv позволяет устанавливать зависимости в родительскую систему при указании флага --system:
При указании флага --deploy — pipenv выдаст ошибку, если Pipfile.lock устарел или версия Python не соответсвует указанной.
Пример Dockerfile для работы с pipenv:
Предположу, что для управления Python окружением в вашем проекте до сих пор используется pip и virtualenv.
Если это так, то позволь рассказать о таком инструменте, как Pipenv.
Pipenv — это современный инструмент для управления рабочим окружением в Python.
Основные возможности pipenv:
- Создание и управление виртуальным окружением
- Синхронизация пакетов в Pipfile при установке и удалении пакетов
- Автоматическая подгрузка переменных окружения из .env файла
Установим последнюю версию pipenv:
Управление рабочим окружением$ pip install pipenv
Перейдем в каталог с Python проектом и создадим виртуальное окружение:
Команда автоматически создаст новое виртуальное окружение для вашего проекта, если он еще не существует.$ cd yourproject
$ pipenv shell
Также, при создании окружения можно указать версию интерпретатора с помощью флага --python, например:
Выход из оболочки виртуального окружения осуществляется с помощью команды exit:$ pipenv shell --python 3.7
Управление зависимостями приложения$ exit
Для установки пакетов воспользуемся командой install:
Pipenv установит последнюю версию пакета Flask и автоматически добавит его в Pipfile.$ pipenv install Flask
При установке можем задать конкретную версию пакета:
Разработчики данного инструмента позаботились и о работе со средой разработки — пакетами, которые необходимы на этапе сборки или тестирования приложений.$ pipenv install Flask==1.0.2
При указании флага --dev, пакет будет установлен как часть среды разработки:
Чтобы установить все пакеты, включая пакеты среды разработки необходимо выполнить:$ pipenv install pytest --dev
Для удаление пакетов существует команда uninstall:$ pipenv install --dev
Сведения об установленных пакетах и их зависимостях хранятся в файле Pipfile.lock, который генерируется автоматически и не должен быть изменен пользователем.$ pipenv uninstall Flask
Запуск исходного кода
Существует возможность запуска исходного кода внутри оболочки virtualenv:
При наличии файла .env команды $ pipenv shell и $ pipenv run, автоматически подгрузят из него переменные окружения:$ pipenv run python yourapplication.py
Развертывание приложения$ cat .env
DEBUG=1
$ echo $DEBUG
1
Pipenv позволяет устанавливать зависимости в родительскую систему при указании флага --system:
Это полезно при развертывания приложений в Docker.$ pipenv install --system
При указании флага --deploy — pipenv выдаст ошибку, если Pipfile.lock устарел или версия Python не соответсвует указанной.
Пример Dockerfile для работы с pipenv:
Пример приложения на Flask с использованием возможностей 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 . .
fdhadzh