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