Pipenv es una herramienta de CLI que soluciona algunos problemas derivados de la gestión de dependencias (paquetes externos) en proyectos Python.
A continuación se añade una pequeña referencia de cómo usar Pipenv.
Instalación
Basta con instalar Pipenv mediante pip:
pip install pipenv
Configuración
Realmente no es necesario hacer ningún cambio de configuración para Pipenv tal como viene por defecto pero, si se quiere, se pueden usar las variables de entorno que se describen en la documentación de Pipenv.
Hay que recordar que Pipenv utiliza pew, con
lo cual si tenemos definida una variable WORKON_HOME donde guardamos todos
nuestros virtualenvs, Pipenv utilizará ésta variable para guardar los suyos.
Esto es útil por ejemplo cuando estamos usando Virtualenvwrapper.
Uso básico
pipenv shell
Crea un entorno virtual, si todavía no existe, para el proyecto actual y lo inicializa. Pipenv instalará en él todos los paquetes.
pipenv install <PAQUETE>
Instala <PAQUETE> y lo añade a los ficheros Pipfile y Pipfile.lock.
Ejemplos:
pipenv install flask==1.1.2: instala Flask en su versión 1.1.2.pipenv install flask: instala Flask sin especificar una versión en concreto (usará la última versión disponible).pipenv install -e git+https://github.com/requests/requests.git#egg=requests: instala la libreríarequestsdirectamente desde su VCS (GitHub).pipenv install pytest --dev: instala pytest en el entorno de desarrollo.pipenv install --ignore-pipfile: instala lo que haya definido en el ficheroPipfile.lock(debe existir este fichero previamente, ver siguiente comandopipenv lock.pipenv install --dev: instala el entorno de desarrollo.pipenv install --deploy: útil para despliegues o creación de imágenes de contenedores. Aborta la ejecución siPipfile.lockno está actualizada o la versión de Python es incorrecta.
Un comando útil puede ser:
pipenv install --deploy --system --ignore-pipfile
Este comando instalaría todos los paquetes necesarios para el proyecto siguiendo
las instrucciones en el fichero Pipfile.lock, abortando si hay problemas con
Pipfile.lock o si la versión de Python es incorrecta, y además lo instalaría
todo en el Python del sistema, sin usar entornos virtuales. Esto puede ser muy
útil en la creación de imágenes de contenedores.
pipenv lock
Crea o actualiza el fichero Pipfile.lock que contiene el registro bloqueado de
las versiones de paquetes a usar en el proyecto. Este fichero no debe ser
editado manualmente, sino siempre creado/actualizado con el comando
pipenv lock.
pipenv graph
Imprime en pantalla un árbol de dependencias mostrando los paquetes del proyecto.
Se puede usar pipenv graph --reverse a la hora de resolver conflictos de
dependencias, si es el caso.
Para comprobar si tenemos instalado un determinado paquete, podemos usar el comando
pipenv graph | grep <PAQUETE>
pipenv run <COMANDO>
Ejecuta comandos que existan en el entorno creado por Pipenv sin necesidad de entrar en el entorno virtual.
pipenv sync
Deja el entorno Python como está especificado en Pipfile.lock. Se puede usar
pipenv sync --system para no usar entornos virtuales e instalar todo en el
Python del sistema. Esto es útil para crear imágenes de contenedores.