Por favor explique el uso de Pipfile y Pipfile.lock

Parece que Pipfile / Pipfile.lock están diseñados para ser reemplazos de Requirements.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 de PyPi del sitio web de Python aquí, pero es bastante complicado y no explica la semántica de las diferentes secciones del archivo.

¿Algún indicador sobre cómo entender estos archivos?

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 administración de paquetes y entornos virtuales que utiliza los archivos Pipfile y Pipfile.lock para lograr estos objectives.

Pipenv maneja el entorno virtual por usted de una manera estándar predeterminada (no es necesario 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 el tipo de carpeta de su proyecto …

 $ pipenv install 

… y si ya tiene un archivo Pipfile , generará un archivo Pipfile con los requisitos y una carpeta de entorno virtual, de lo contrario, generará un archivo Pipfile vacío. Si no le gusta o cambió de opinión sobre algo que ha instalado, simplemente escriba …

 $ pipenv uninstall  

… y eres bueno para ir Para activar el entorno virtual que pipenv ya generó, vaya con …

 $ pipenv shell 

… y su entorno virtual se activará. Dejar el medio ambiente …

 $ exit 

… y volverá a su sesión 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. Puedes instalar un paquete simplemente usando …

 $ pipenv install flask 

… y se agregará como una dependencia para la implementación y ejecución o mediante el uso de …

 $ pipenv install --dev pytest 

… y se usará como una dependencia del tiempo de desarrollo. La syntax del archivo es bastante sencilla, como sigue.

 [[source]] # Here goes your package sources (where you are downloading your packages from). url = "https://pypi.python.org/simple" verify_ssl = true name = "pypi" [packages] # Here goes your package requirements for running the application and its versions (which packages you will use when running the application). requests = "*" flask = "*" pandas = "*" [dev-packages] # Here goes your package requirements for developing the application and its versions (which packaes you will use when developing the application) pylint = "*" wheel = "*" [requires] # Here goes your required Python version. python_version = "3.6" 

Pipfile.lock

El objective de Pipfile.lock es especificar, en función de los paquetes presentes en Pipfile , qué versión específica se debe usar, evitando los riesgos de actualizar automáticamente los paquetes que dependen unos de otros y rompiendo el árbol de dependencias de su proyecto.

Puedes bloquear tus paquetes instalados actualmente usando …

 $ pipenv lock 

… y la herramienta buscará su carpeta de entorno virtual para generar el archivo de locking automáticamente, según las versiones instaladas actualmente. La syntax del archivo no es tan obvia como lo es para Pipfile , por lo que, por concisión, no se mostrará aquí.


¿Aún tienes dudas? Déjame saber, para poder mejorar la respuesta, para que otros puedan aprender de ella. Ya le he migrado mis proyectos y lo estoy utilizando a diario en mi trabajo, vale la pena;)