Una comparación de productos 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 la 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é pip list
genera una lista más completa que pip freeze
?
python
python-2.7
python-3.x
pip
nitrl
fuente
fuente
Respuestas:
Cuando usa un
virtualenv
, puede especificar unrequirements.txt
archivo para instalar todas las dependencias.Un uso típico:
Los paquetes deben estar en un formato específico para
pip
comprender, que esEse es el "formato de requisitos".
Aquí,
django==1.4.2
implica ladjango
versión de instalación1.4.2
(aunque la última es 1.6.x). Si no lo especifica==1.4.2
, se instalará la última versión disponible.Puede leer más en " Conceptos básicos de Virtualenv y pip " y la documentación oficial " Formato de archivo de requisitos ".
fuente
pip list
enumera todo epip freeze
instala todo lo instalado por pip.pip install
wsgiref
.wsgiref.egg-info
en el directorio Lib, por lo que pip lo sabe. No puede [desinstalar] instalarlo con pip, y las versiones posteriores de Python omiten el archivo de metadatos para que no aparezca.Para responder a la segunda parte de esta pregunta, los dos paquetes que se muestran
pip list
pero nopip freeze
sonsetuptools
(que es easy_install) ypip
sí mismo.Parece que
pip freeze
simplemente no enumera los paquetes de los que depende el pip. Puede utilizar el--all
bandera para mostrar también esos paquetes.De la documentación :
fuente
pip freeze
tiene una opción--all
para mostrar también:pip, setuptools, distribute, wheel
pip.pypa.io/en/stable/reference/pip_freezeLa principal diferencia es que la salida 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, puede hacerlo:pip install -r frozen-requirements.txt
y obtendrá un entorno idéntico con exactamente las mismas dependencias instaladas que tenía en el entorno original donde generó el archivo frozen-requirements.txt.fuente
Mire la documentación de pip , que describe la funcionalidad de ambos como:
lista de pips
congelación de pepitas
Entonces hay dos diferencias:
Formato de salida,
freeze
nos proporciona el formato de requisitos estándar que se puede utilizar más adelantepip install -r
para instalar los requisitos.Contenido de salida,
pip list
incluye editables quepip freeze
no lo hacen.fuente
pip list
muestra TODOS los paquetes.pip freeze
muestra los paquetes que USTED instaló a través depip
(opipenv
comando si usa esa herramienta) en un formato de requisitos.Observe a continuación que setuptools , pip , wheel se instalan cuando
pipenv shell
crea mi sobre virtual. Estos paquetes NO fueron instalados por mí usandopip
:Ahora revise y compare la salida de los comandos respectivos donde solo instalé cool-lib y sampleproject (de los cuales peppercorn es una dependencia):
fuente