Uma comparação de resultados revela diferenças:
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 documentação de Pip
freeze Output installed packages in requirements format.
list List installed packages.
mas o que é "formato de requisitos" e por que pip list
gera uma lista mais abrangente do que pip freeze
?
python
python-2.7
python-3.x
pip
nitrl
fonte
fonte
Respostas:
Ao usar um
virtualenv
, você pode especificar umrequirements.txt
arquivo para instalar todas as dependências.Um uso típico:
Os pacotes precisam estar em um formato específico para
pip
entender, que éEsse é o "formato de requisitos".
Aqui,
django==1.4.2
implica adjango
versão de instalação1.4.2
(embora a mais recente seja 1.6.x). Se você não especificar==1.4.2
, a versão mais recente disponível será instalada.Você pode ler mais em " Noções básicas de Virtualenv e pip " e na documentação oficial do " Formato de arquivo de requisitos ".
fonte
pip list
lista tudo epip freeze
instala tudo instalado pelo pip.pip install
wsgiref
.wsgiref.egg-info
no diretório Lib, e é por isso que pip sabe sobre isso. Você não pode [des] instalá-lo com o pip, e versões posteriores do Python omitem o arquivo de metadados para que ele não apareça.Para responder à segunda parte desta questão, os dois pacotes mostrados em
pip list
mas nãopip freeze
sãosetuptools
(que é easy_install) epip
ele mesmo.Parece que
pip freeze
simplesmente não lista os pacotes dos quais o pip depende. Você pode usar a--all
bandeira para mostrar também esses pacotes.Da documentação :
fonte
pip freeze
tem a opção--all
de mostrar também:pip, setuptools, distribute, wheel
pip.pypa.io/en/stable/reference/pip_freezeA principal diferença é que a saída de
pip freeze
pode ser despejada em um arquivo requirements.txt e usada posteriormente para reconstruir o ambiente "congelado".Em outras palavras, você pode executar:
pip freeze > frozen-requirements.txt
em uma máquina e depois em uma máquina diferente ou em um ambiente limpo, você pode fazer:pip install -r frozen-requirements.txt
e você obterá um ambiente idêntico com as mesmas dependências instaladas exatamente como tinha no ambiente original onde você gerou o arquivo frozen-requirements.txt.fonte
Veja a documentação do pip , que descreve a funcionalidade de:
lista de pip
pip freeze
Portanto, existem duas diferenças:
O formato de saída
freeze
nos fornece o formato de requisito padrão que pode ser usado posteriormentepip install -r
para instalar os requisitos.Conteúdo de saída,
pip list
inclui editáveis quepip freeze
não.fonte
pip list
mostra TODOS os pacotes instalados.pip freeze
mostra os pacotes que VOCÊ instalou através do comandopip
(oupipenv
se estiver usando essa ferramenta) em um formato de requisitos.Observe abaixo que as ferramentas de configuração , pip , roda são instaladas ao
pipenv shell
criar meu envelope virtual. Esses pacotes NÃO foram instalados por mim usandopip
:Agora analise e compare a saída dos respectivos comandos onde instalei apenas cool-lib e sampleproject (dos quais pimenta é uma dependência):
fonte