Pipenv: Flujo de trabajo en Python para humanos.¶
Pipenv es una herramienta que apunta a traer todo lo mejor del mundo de empaquetado (bundler, composer, npm, cargo, yarn, etc.) al mundo de Python. Windows es un ciudadano primera-clase en nuestro mundo
Automáticamente crea y maneja un entorno virtual para tus proyectos, también como agregar/remover paquetes desde tu Pipfile como instalar/desisntalar paquetes. También genera el más importante Pipfile.lock, que es usado para producir determinado build.
Pipenv está destinado principalmente a proporcionar a usuarios y desarrolladores de aplicaciones con un metodo sencillo para configurar un entorno de trabajo. Para la distinción entre librerias y aplicaciones y el uso de setup.py vs Pipfile para definir dependencias, mira ☤ Pipfile vs setup.py.
Los problemas que Pipenv busca resolver son multifacéticos
- No necesitas usar más
pipyvirtualenvseparados. Trabajan juntos. - Manejar un archivo
requirements.txtpuede ser problemático, por eso Pipenv usa en su lugarPipfileyPipfile.lock, que son superiores para usos básicos - Los Hashes se usan en todas partes, siempre. Seguridad. Automáticamente expone vulnerabilidades de seguridad.
- Te da una vista de tu árbol de dependecias (e.g.
$ pipenv graph). - Coordina el flujo de desarrollo cargando archivos
.env.
¡Instala hoy Pipenv!¶
Si estas en MacOS, puedes instalar Pipenv fácilmente con Homebrew:
$ brew install pipenv
O, si estás usando Ubuntu 17.10:
$ sudo apt install software-properties-common python-software-properties
$ sudo add-apt-repository ppa:pypa/ppa
$ sudo apt update
$ sudo apt install pipenv
De lo contrario, solo usa pip:
$ pip install pipenv
✨🍰✨
Testimonios de Usuarios¶
- Jannis Leidel, former pip maintainer—
- Pipenv is the porcelain I always wanted to build for pip. It fits my brain and mostly replaces virtualenvwrapper and manual pip calls for me. Use it.
- David Gang—
- This package manager is really awesome. For the first time I know exactly what my dependencies are which I installed and what the transitive dependencies are. Combined with the fact that installs are deterministic, makes this package manager first class, like cargo.
- Justin Myles Holmes—
- Pipenv is finally an abstraction meant to engage the mind instead of merely the filesystem.
☤ Características de Pipenv¶
- Habilita verdaderos builds deterministas, mientras fácilmente especificas solo lo que quieres.
- Genera y verifica hashes en los archivos para bloquear dependencias.
- Automáticamente instala la versión de Python, si
pyenvesta disponible - Automáticamente busca tu proyecto home, recursivamente, buscando por un
Pipfile - Automáticamente genera un
Pipfile, si no existe - Automáticamente crea un entorno virtual en una locación estándar
- Automáticamente agrega/remueve paquetes a un
Pipfilecuando se instala/desinstala - Automáticamente carga archivos
.env, si estos existen.
Los comandos principales son install, uninstall and lock, el cual genera un Pipfile.lock. Estos tienen la intención de reemplazar el uso de $ pip install, así como manejar manualmente un entorno virtual (para activar uno, corre $ pipenv shell).
Conceptos Básicos¶
- Un entorno virtual se creará automáticamente, cuando no exista.
- Cuando no se pasen parámetros a
install, todos los paquetes[packages]especificados se instalarán. - Para iniciar un entorno virtual con Python 3, corre
$ pipenv --three. - Para iniciar un entorno virtual con Python 2, corre
$ pipenv --two. - De lo contrario, cualquier entorno virtual será por defecto.
Otros Comandos¶
graphva a imprimir un bonito árbol de todas tus dependencias instaladas.shellgenerará un shell con el entorno virtual activado.runva a correr el comando dado desde el entorno virtual, con algún argumento adelante (e.g.$ pipenv run pythono$ pipenv run pip freeze)checkasegura que los requerimientos en PEP 508 se están cumpliendo en el entorno actual.
Más guías de documentación¶
- Uso Básico de Pipenv
- ☤ Ejemplo de Pipfile & Pipfile.lock
- ☤ Recomendaciones generales & Control de versión
- ☤ Ejemplo del flujo de trabajo de Pipenv
- ☤ Ejemplo de uso del flujo de trabajo.
- ☤ Importando desde requirements.txt
- ☤ Especifica la versión de un parquete
- ☤ Especifica la versión de Python
- ☤ Dependencias editables (e.j.
-e .) - ☤ Environment Management with Pipenv
- ☤ Configuración sobre el shell
- ☤ Una nota sobre dependencias en SCV
- ☤ Pipfile.lock características de seguridad
- Uso avanzado de Pipenv
- ☤ Advertencias
- ☤ Especificando indice de paquete
- ☤ Usando un PyPI Mirror
- ☤ Inyectando credenciales en Pipfiles con variables de entorno
- ☤ Especificando básicamente cualquier cosa
- ☤ Desplegando Dependencias de Sistema
- ☤ Pipenv y otras distribuciones
- ☤ Generando un
requirements.txt - ☤ Detectando vulnerabilidades de seguridad
- ☤ Integraciones de Comunidad
- ☤ Abriendo un módulo en tu editor
- ☤ Instalaciones automáticas de Python
- ☤ Carga automática de
.env - ☤ Atajos personalizados para Scripts
- ☤ Soporte para Variables de Entorno
- ☤ Configuración con Variables de Entorno
- ☤ Localización Personalizada de Entorno Virtual
- ☤ Testeando Proyectos.
- ☤ Completado en Shell
- ☤ Trabajando con componentes de Python provistos por la plataforma
- ☤ Pipfile vs setup.py
- ☤ Cambiando la locación de Cache de Pipenv
- ☤ Cambiando donde Pipenv guarda Entorno Virtuales
- ☤ Cambiando la versión por defecto de Python
- Problemas frecuentes encontrados con Pipenv
- ☤ Tus dependencias no pudieron ser resueltas
- ☤ No module named <module name>
- ☤ Mi Python instalado con pyenv no es encontrado
- ☤ Pipenv no respeta las versiones locales y globales de pyenv
- ☤ ValueError: unknown locale: UTF-8
- ☤ /bin/pip: No such file or directory
- ☤
shelldoes not show the virtualenv’s name in prompt - ☤ Pipenv no respeta las dependencias en setup.py
- ☤ Usando
pipenv runen el programa Supervisor
☤ Uso de Pipenv¶
pipenv¶
pipenv [OPTIONS] COMMAND [ARGS]...
Options
-
--where¶ Muestra la ruta del proyecto.
-
--venv¶ Muestra la ruta donde esta el entorno virtual.
-
--py¶ Muestra la ruta donde esta el interprete de Python.
-
--envs¶ Muestra opciones para variables de entorno.
-
--rm¶ Remove the virtualenv.
-
--bare¶ Salida minima.
-
--completion¶ Output completion (to be eval’d).
-
--man¶ Display manpage.
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
-
--site-packages¶ Activa los paquetes de sitio para el entorno virtual.
-
--version¶ Show the version and exit.
check¶
pipenv check [OPTIONS] [ARGS]...
Options
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
-
--system¶ Use system Python.
-
--unused<unused>¶ Dada una ruta de codigo, muestra dependencias sin usar.
Arguments
-
ARGS¶ Optional argument(s)
clean¶
pipenv clean [OPTIONS]
Options
-
-v,--verbose¶ Modo detallado.
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
-
--dry-run¶ Solo hace output de las dependencias innecesarias
graph¶
pipenv graph [OPTIONS]
Options
-
--bare¶ Salida minima.
-
--json¶ Muestra JSON.
-
--json-tree¶ Muestra un arbol JSON .
-
--reverse¶ Muestra un arbol de dependencias en reverso.
install¶
pipenv install [OPTIONS] [PACKAGE_NAME] [MORE_PACKAGES]...
Options
-
-d,--dev¶ Instala paquetes en [dev-packages].
-
--three,--two¶ Usa Ptyon3/2 cuando se crea el entorno virutal.
-
--python<python>¶ Especifica la version de Python que deberia usar el entorno virtual.
-
--pypi-mirror<pypi_mirror>¶ Especifica un PyPI mirror.
-
--system¶ System pip management.
-
-r,--requirements<requirements>¶ Importa un archivo requirements.txt.
-
-c,--code<code>¶ Importa desde un codigo base.
-
-v,--verbose¶ Modo detallado.
-
--ignore-pipfile¶ Ignora Pipfile cuando esta instalando, usa el Pipfile.lock.
-
--sequential¶ Instala las dependencias una por una, en vez de concurrentemente.
-
--skip-lock¶ Ignora el mecanismo de lock cuando esta instalando, en su lugar usa el Pipfile.
-
--deploy¶ Cancela si el Pipfile.lock esta desactualizado, o la version de Python es incorrecta.
-
--pre¶ Permite prelanzamientos.
-
--keep-outdated¶ Mantiene a las dependencias desactualizadas de ser actualizadas en Pipfile.lock.
-
--selective-upgrade¶ Actualiza paquetes especificos.
Arguments
-
PACKAGE_NAME¶ Optional argument
-
MORE_PACKAGES¶ Optional argument(s)
lock¶
pipenv lock [OPTIONS]
Options
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
-
--pypi-mirror<pypi_mirror>¶ Especifica un PyPI mirror.
-
-v,--verbose¶ Modo detallado.
-
-r,--requirements¶ Genera un output compatible con requirements.txt
-
-d,--dev¶ Genera un output compatible con requirements.txt para dependencias de desarrollo.
-
--clear¶ Limpia el cache de dependencias.
-
--pre¶ Permite prelanzamientos
-
--keep-outdated¶ Mantiene las dependencias desactualizadas de ser actualizadas en el Pipfile.lock.
open¶
pipenv open [OPTIONS] MODULE
Options
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
Arguments
-
MODULE¶ Required argument
run¶
pipenv run [OPTIONS] COMMAND [ARGS]...
Options
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
Arguments
-
COMMAND¶ Required argument
-
ARGS¶ Optional argument(s)
shell¶
pipenv shell [OPTIONS] [SHELL_ARGS]...
Options
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
-
--fancy¶ Ejecuta un shell en fancy mode (para shells configuradas de manera elegantes).
-
--anyway¶ Siempre genera una subshell, incluso con una ya generada.
Arguments
-
SHELL_ARGS¶ Optional argument(s)
sync¶
pipenv sync [OPTIONS]
Options
-
-v,--verbose¶ Modo detallado.
-
-d,--dev¶ Adicionalmente instala paquete(s) en [dev-packages].
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
-
--pypi-mirror<pypi_mirror>¶ Especifica un PyPI mirror.
-
--bare¶ Salida minima.
-
--clear¶ Limpia el cache de dependencias.
-
--sequential¶ Instala dependencias una por una, en vez de concurrentemente.
uninstall¶
pipenv uninstall [OPTIONS] [PACKAGE_NAME] [MORE_PACKAGES]...
Options
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica que version de Python deberia usar el e entorno virtual.
-
--system¶ System pip management.
-
-v,--verbose¶ Modo detallado.
-
--lock¶ Lock afterwards.
-
--all-dev¶ Desistala paquetes de [dev-packages].
-
--all¶ Elimina todos los paquetes del entorno virtual. No edita el Pipfile.
-
--keep-outdated¶ Mantiene las dependencias desactualizadas de ser actualizadas en el Pipfile.lock.
-
--pypi-mirror<pypi_mirror>¶ Especifica un PyPI mirror.
Arguments
-
PACKAGE_NAME¶ Optional argument
-
MORE_PACKAGES¶ Optional argument(s)
update¶
pipenv update [OPTIONS] [MORE_PACKAGES]... [PACKAGE]
Options
-
--three,--two¶ Usa Python 3/2 cuando crea un entorno virtual.
-
--python<python>¶ Especifica cual version de Python deberia usar el entorno virtual.
-
--pypi-mirror<pypi_mirror>¶ Especifica un PyPI mirror.
-
-v,--verbose¶ Modo detallado.
-
-d,--dev¶ Instala paquete(s) en [dev-packages].
-
--clear¶ Limpia el cache de dependencias.
-
--bare¶ Salida minima.
-
--pre¶ Permite prelanzamientos
-
--keep-outdated¶ Mantiene las dependencias desactualizadas de ser actualizadas en el Pipfile.lock.
-
--sequential¶ Instala dependencias una por una, en vez de concurrentemente.
-
--outdated¶ Lista dependencias desactualizadas
-
--dry-run¶ Lista dependencias desactualizadas
Arguments
-
MORE_PACKAGES¶ Optional argument(s)
-
PACKAGE¶ Optional argument