Parece que Pipfile / Pipfile.lock están destinados a ser reemplazos de require.txt, en el contexto del empaquetado de Python. Sin embargo, no hay mucha documentación sobre cómo funcionan realmente. Encontré una descripción evolutiva de pipfile en la sección PyPi del sitio web de Python aquí, pero es bastante desordenada y no explica la semántica de las diferentes secciones del archivo.
¿Algún indicador sobre cómo entender estos archivos?
Gemfile
yGemfile.lock
desde el mundo Ruby: el.lock
archivo tiene versiones específicas para cada dependencia; el que no tiene esa extensión solo tiene las versiones conocidas por los humanos que controlan. Dicho esto, pedir una explicación de algo que todavía está evolucionando y que está muy lejos de estar bien definido, mucho menos estandarizado, es quizás un poco prematuro.Pipfile
yrequirements.txt
es en gran medida que el primero trata de adoptar características del mundo Ruby, es decir, poder especificar conjuntos de dependencias para entornos múltiples y con condiciones / opciones / etc. dentro de un solo archivo).Respuestas:
El concepto detrás de estos archivos es simple y análogo a otras herramientas ya existentes, si está familiarizado con Ruby's Bundler o Node's Npm.
Pipenv
es una herramienta de gestión de entornos virtuales y paquetes que utiliza los archivos Pipfile y Pipfile.lock para lograr estos objetivos.Pipenv maneja el entorno virtual por usted de una manera estándar predeterminada (no se requiere activar ni desactivar más). A continuación, algunos conceptos básicos para comenzar, vea más en el sitio web de pipenv .
Empezando
Comenzar a usar pipenv es fácil, en su carpeta de proyecto escriba ...
... y si ya tiene un
requirements.txt
archivo, generará unPipfile
archivo con los requisitos y una carpeta de entorno virtual, de lo contrario, generará unPipfile
archivo vacío . Si no le gustó o cambió de opinión acerca de algo que instaló, simplemente escriba ...... y estás listo para irte. Para activar el entorno virtual que pipenv ya generó, vaya con ...
... y su entorno virtual se activará. Para salir del medio ambiente ...
... y volverá a su sesión de terminal original.
Pipfile
El archivo Pipfile está destinado a especificar los requisitos de paquetes para su aplicación o biblioteca de Python, tanto para el desarrollo como para la ejecución. Puede instalar un paquete simplemente usando ...
... y se agregará como una dependencia para la implementación y ejecución o mediante el uso de ...
... y se usará como dependencia para el tiempo de desarrollo. La sintaxis del archivo es bastante sencilla, como sigue.
Pipfile.lock
El Pipfile.lock tiene la intención de especificar, en base a los paquetes presentes en Pipfile , qué versión específica de esos debe usarse, evitando los riesgos de actualizar automáticamente los paquetes que dependen unos de otros y romper el árbol de dependencia de su proyecto.
Puede bloquear sus paquetes instalados actualmente usando ...
... y la herramienta buscará su carpeta de entorno virtual para generar el archivo de bloqueo automáticamente, en función de las versiones instaladas actualmente. La sintaxis del archivo no es tan obvia como lo es para Pipfile , por lo que, en aras de la concisión, no se mostrará aquí.
fuente
[[source]]
, ¿es que la fuente de los paquetes descargados por pipenv o algo más? Supongo que el resto de los dos archivos es bastante obvio.Pipfile
. Si algo se rompe en la actualización de un paquete, uno debería poder solucionarlo revisando el historial de versiones del paquete, y de hecho, uno de los creadores de la biblioteca de solicitudes recomienda hacerlo aquí .--skip-lock
indicador para obligarlo a ignorar elPipfile.lock
archivo en lugar de obligarlo a usarlo;)