pipenv python, виртуальное окружение pip

pipenv является более высокоуровневым аналогом Virtualenv и также позволяет создать окружение для работы с проектом, написанным на python. Окружение позволит использовать Pipfile, в который будет писаться информация о всех зависимостях устанавливаемых пакетов.

 

Этот файл может оказаться полезным при переносе проекта на другой сервер.

 

Virtailenv удобен, но у него есть минусы — основных два. Первый — необходимость активации окружения, командой

source bin/activate

Это вызывает неудобство когда на одном сервере несколько сайтов на питон каждый из которых работает в своем окружении.

 

 

Второй в том, что в requirements.txt жестко фиксируются версии всех пакетов. Это удобно при переносе, но если один из пакетов обновляется файл с требованиями также необходимо обновлять.

 

 

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

 

 

Установка Pip и Python, настройка pipenv

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

apt-get install python

apt-get install python-pip

Когда пакеты установлен проверяем версии

python —version

pip —version

 

Pip используется для установки пакетов глобально для системы

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

Установим его

pip install —user pipenv

 

В системную переменную PATH добавляем ~/.local/bin

 

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

mkdir progect && cd project

 

Устанавливаем библиотеку requests, также будет создан Pipfile в который будет записываться информация о зависимостях пакетов.

pipenv install requests

 

mcedit main.py

import requests

response = requests.get('https://httpbin.org/ip')

print('Your IP is {0}'.format(response.json()['origin']))

 

pipenv run python main.py

 

Ответом должна быть строка Your IP is IP адрес

 

Использование окружения pip, как уже говорилось, хорошо тем, что версии пакетов контролируются автоматически, но можно заморозить список используемого ПО с указанием версий выполнив

pipenv lock

 

При этом будет создан файл Pipfile.lock

Из других преимуществ возможность использования одного окружения одновременно для разработки и в продакшене. Во втором случае достаточно при установке пакета добавить ключевое слово —dev.

 

Пакет установится и будет использоваться только в разработке, по-умолчанию в окружении он присутствовать не будет.

 

Активируется окружение переходм в шел

pipenv shell

 

Можно выполнять команды из окружения и не переходя в него непосредственно, это делается так:

pipenv run command python