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.2Estados 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 listgenera 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.txtarchivo para instalar todas las dependencias.Un uso típico:
Los paquetes deben estar en un formato específico para
pipcomprender, que esEse es el "formato de requisitos".
Aquí,
django==1.4.2implica ladjangoversió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 listenumera todo epip freezeinstala todo lo instalado por pip.pip installwsgiref.wsgiref.egg-infoen 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 listpero nopip freezesonsetuptools(que es easy_install) ypipsí mismo.Parece que
pip freezesimplemente no enumera los paquetes de los que depende el pip. Puede utilizar el--allbandera para mostrar también esos paquetes.De la documentación :
fuente
pip freezetiene una opción--allpara mostrar también:pip, setuptools, distribute, wheelpip.pypa.io/en/stable/reference/pip_freezeLa principal diferencia es que la salida de
pip freezese 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.txten una máquina y luego en una máquina diferente o en un entorno limpio, puede hacerlo:pip install -r frozen-requirements.txty 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,
freezenos proporciona el formato de requisitos estándar que se puede utilizar más adelantepip install -rpara instalar los requisitos.Contenido de salida,
pip listincluye editables quepip freezeno lo hacen.fuente
pip listmuestra TODOS los paquetes.pip freezemuestra los paquetes que USTED instaló a través depip(opipenvcomando si usa esa herramienta) en un formato de requisitos.Observe a continuación que setuptools , pip , wheel se instalan cuando
pipenv shellcrea 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