pipenv install позволяет выполнить установку модуля в pip окружение для отдельного проекта на python, без установки глобально в систему.
Рассмотрим сначала pipenv, потом перейдем к установке зависимостей проекта.
pipenv является более высокоуровневым аналогом Virtualenv и также позволяет создать окружение для работы с проектом, написанным на python. Окружение позволит использовать Pipfile, в который будет писаться информация о всех зависимостях устанавливаемых пакетов.
Этот файл может оказаться полезным при переносе проекта на другой сервер.
Virtailenv удобен, но у него есть минусы — основных два. Первый — необходимость активации окружения, командой
source bin/activate
Это вызывает неудобство когда на одном сервере несколько сайтов на python каждый из которых работает в своем окружении.
Второй в том, что в requirements.txt жестко фиксируются версии всех пакетов. Это удобно при переносе, но если один из пакетов обновляется файл с требованиями также необходимо обновлять.
Pipenv этих минусов не имеет, относительно второго вопроса, в частности, отслеживание зависимостей происходит автоматически, т.е. в Pipfile вместо версий помещается *, и используются самые свежие версии пакетов в случае если они могут быть использованы и никакие зависимости при этом не нарушаются.
Установка Pip и Python, настройка pipenv
Для демонстрации взят сервер с Ubuntu. Устанавливаем питон из репозитория
apt-get install python
apt-get install python-pip
Когда пакеты установлен проверяем версии
python --version
pip --version
Pip используется для установки пакетов глобально для системы
Чтобы ставить пакеты для отдельных пользователей потребуется менеджер зависимостей, о котором ведется речь в рамках данного материала
Установим его
pip install --user pipenv
В системную переменную PATH добавляем ~/.local/bin
Пример приведен на скриншоте:
Окружение работает с проектами, каждый из которых представляет собой каталог. Создадим каталог проекта и перейдем в него
mkdir project && cd project
Использование pipenv install
Устанавливаем библиотеку 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
Из других преимуществ возможность использования одного окружения одновременно для разработки и в production. Во втором случае достаточно при установке пакета добавить ключевое слово --dev
.
Пакет установится и будет использоваться только в разработке, по-умолчанию в окружении он присутствовать не будет.
Активируется окружение переходим в шел
pipenv shell
Можно выполнять команды из окружения и не переходя в него непосредственно, это делается так:
pipenv run command python
Читайте про запуск приложения на фреймворке Flask, при настройке его работы можно использовать pipenv.