Pip freeze vs. pip list

Una comparación de resultados revela diferencias:

user@user-VirtualBox:~$ pip list feedparser (5.1.3) pip (1.4.1) setuptools (1.1.5) wsgiref (0.1.2) user@user-VirtualBox:~$ pip freeze feedparser==5.1.3 wsgiref==0.1.2 

Estados de documentación de pip

 freeze Output installed packages in requirements format. list List installed packages. 

pero, ¿qué es el “formato de requisitos” y por qué la pip list genera una lista más completa que la pip freeze ?

Cuando está utilizando un virtualenv , puede especificar un archivo Requirements.txt para instalar todas las dependencias.

Un uso típico:

 $ pip install -r requirements.txt 

Los paquetes deben estar en un formato específico para que pip comprenda, que es

 feedparser==5.1.3 wsgiref==0.1.2 django==1.4.2 ... 

Ese es el “formato de requisitos”.

Aquí, django==1.4.2 implica instalar la versión 1.4.2 django (aunque la última es 1.6.x). Si no especifica ==1.4.2 , se instalará la última versión disponible.

Puede leer más en ” Conceptos básicos de Virtualenv y pip ” y en la documentación oficial del ” Formato de archivo de requisitos “.

Para responder a la segunda parte de esta pregunta, los dos paquetes que se muestran en la pip list pero no en la pip freeze son setuptools (que es easy_install) y pip sí.

Parece que la pip freeze simplemente no enumera los paquetes de los que depende pip. Puede usar la bandera --all para mostrar también esos paquetes.

De la documentación :

--all

No omita estos paquetes en la salida: pip, setuptools, distribuye, wheel

Mire la documentación de pip , que describe la funcionalidad de ambos como:

lista de pips

Lista de paquetes instalados, incluyendo editables.

congelación de pip

Salida de paquetes instalados en formato de requerimientos.

Así que hay dos diferencias:

  1. El formato de salida, freeze nos da el formato de requisitos estándar que se puede usar más adelante con pip install -r para instalar los requisitos de.

  2. Contenido de salida, la pip list incluye elementos editables que la pip freeze no.

La principal diferencia es que la salida de la pip freeze de pip freeze se puede volcar en un archivo Requirements.txt y usarse más tarde para reconstruir el entorno “congelado”.

En otras palabras, puede ejecutar: pip freeze > frozen-requirements.txt en una máquina y luego en una máquina diferente o en un entorno limpio que puede hacer: pip install -r frozen-requirements.txt y obtendrá la entorno idéntico con las mismas dependencias instaladas exactamente como las que tenía en el entorno original donde generó el archivo frozen-Requirements.txt.