Existe uma maneira de encontrar todos os pacotes PyPI PyPI que foram instalados com easy_install ou pip? Quero dizer, excluindo tudo o que foi / está instalado com as ferramentas de distribuição (neste caso, o apt-get no Debian).
python
pip
easy-install
pypi
Jürgen A. Erhard
fonte
fonte
Respostas:
pip freeze
produzirá uma lista de pacotes instalados e suas versões. Também permite gravar esses pacotes em um arquivo que pode ser usado posteriormente para configurar um novo ambiente.https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze
fonte
pip freeze
epip list
liste tudo. Eles não excluem os pacotes que não foram instalados porpip
.pip freeze
que é confiável em scripts, enquantopip list
gera erros inesperados ao ser usado com pipes.pip list -l
Oupip list --local
é a melhor resposta, consulte stackoverflow.com/a/43012269/491884 por @MJBA partir da versão 1.3 do pip, agora você pode usar
pip list
Possui algumas opções úteis, incluindo a capacidade de mostrar pacotes desatualizados. Aqui está a documentação: https://pip.pypa.io/en/latest/reference/pip_list/
fonte
pip freeze
pip list --user
mostra apenas pacotes instalados pelo usuário e exclui pacotes de todo o sistema.Se alguém estiver se perguntando, você pode usar o comando 'pip show'.
Isso listará o diretório de instalação do pacote fornecido.
fonte
Se o Debian se comporta como as versões recentes do Ubuntu em relação ao
pip install
destino padrão, é fácil: ele é instalado em/usr/local/lib/
vez de/usr/lib
(apt
destino padrão). Verifique /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747Eu sou um usuário do ArchLinux e, ao experimentar o pip, encontrei o mesmo problema. Aqui está como eu o resolvi no Arch.
A chave aqui é
/usr/lib/python2.7/site-packages
, para qual diretório o pip é instalado, YMMV.pacman -Qo
é como do Arco pac kage homem cheques ager para a propriedade do arquivo.No package
é parte do retorno que dá quando nenhum pacote possui o arquivo:error: No package owns $FILENAME
. Solução complicada: estou consultando,__init__.py
porquepacman -Qo
é um pouco ignorante quando se trata de diretórios :(Para fazer isso em outras distros, você precisa descobrir onde as
pip
coisas são instaladas (apenassudo pip install
algo), como consultar a propriedade de um arquivo (é o método Debian / Ubuntudpkg -S
) e qual é o retorno "nenhum pacote possui esse caminho" (Debian / Ubuntu éno path found matching pattern
). Usuários Debian / Ubuntu, cuidado:dpkg -S
falhará se você der um link simbólico. Apenas resolva-o primeiro usandorealpath
. Como isso:Os usuários do Fedora podem tentar (obrigado @eddygeek):
fonte
dpkg
escreva o erro em stderr, então eu tenho que adicionar um redirecionamento2>&1
. E para produção internacional, adicioneLANG=
na frentexargs dpkg -s
. esed
também é uma boa ferramenta;) para manter apenas o nome do pacote do caminho. Então, acabo com:find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | LANG= xargs dpkg -S 2>&1 | grep 'no path found' | sed "s/.*\/\([^\/]*\)\/__init__\.py.*/\1/"
Começar com:
Para listar todos os pacotes. Depois de encontrar o pacote desejado, use:
Isso mostrará detalhes sobre este pacote, incluindo sua pasta. Você pode pular a primeira parte se já souber o nome do pacote
Clique aqui para obter mais informações sobre o pip show e aqui para obter mais informações sobre a lista de pips.
Exemplo:
fonte
pip.get_installed_distributions()
dará uma lista de pacotes instaladosfonte
O abaixo é um pouco lento, mas fornece uma lista bem formatada de pacotes que
pip
está ciente. Ou seja, nem todos eles foram instalados "por" pip, mas todos devem poder ser atualizados por pip.A razão pela qual é lento é que lista o conteúdo de todo o repositório pypi. Eu enviei um ticket sugerindo
pip list
uma funcionalidade semelhante, mas com mais eficiência.Saída de amostra: (restringiu a pesquisa a um subconjunto em vez de '.' Para todos.)
fonte
Adicionando à resposta de @Paul Woolcock,
criará um arquivo de requisitos com todos os pacotes instalados , juntamente com os números de versão instalados no ambiente ativo no local atual. Corrida
instalará os pacotes especificados no arquivo de requisitos.
fonte
As versões mais recentes do pip têm a capacidade de fazer o que o OP deseja via
pip list -l
oupip freeze -l
(--list
).No Debian (pelo menos), a página de manual não deixa isso claro, e eu o descobri apenas - assumindo que o recurso deve existir - com
pip list --help
.Existem comentários recentes que sugerem que esse recurso não é óbvio na documentação ou nas respostas existentes (embora sugeridas por alguns), então achei que deveria postar. Eu preferiria fazê-lo como um comentário, mas não tenho pontos de reputação.
fonte
pip freeze --local
por 8 anos.pip list --local
também está disponível ... mas observe que a pergunta do OP não é sobre ambientes virtuais (que--local
oferecem suporte), mas sobre discernir pacotes de distribuição desudo pip install
pacotes.Observe que, se você tiver várias versões do Python instaladas no seu computador, poderá ter algumas versões do pip associadas a cada uma.
Dependendo de suas associações, você pode ter muito cuidado com o comando pip usado:
Trabalhou para mim, onde estou executando o Python3.4. Simplesmente usando
pip list
retornou o erroThe program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip
.fonte
Como o @almenon apontou, isso não funciona mais e não é a maneira suportada de obter informações do pacote no seu código. A seguir, uma exceção:
Para fazer isso, você pode importar
pkg_resources
. Aqui está um exemplo:Estou dentro
v3.6.5
fonte
Aqui está o one-liner para o fedora ou outras distribuições rpm (com base nas dicas @barraponto):
Anexe isso ao comando anterior para obter uma saída mais limpa:
fonte
Obtenha todos os nomes de arquivos / pastas
site-packages/
(e,dist-packages/
se existir) e use o gerenciador de pacotes para remover os que foram instalados via pacote.fonte
O pip freeze lista todos os pacotes instalados, mesmo que não seja pelo pip / easy_install. No CentOs / Redhat, é encontrado um pacote instalado através do rpm.
fonte
Se você usar a distribuição python do Anaconda , poderá usar o
conda list
comando para ver o que foi instalado por qual método:Para pegar as entradas instaladas por
pip
(inclusive possivelmente porpip
si):É claro que você provavelmente deseja selecionar apenas a primeira coluna, com a qual você pode fazer (excluindo,
pip
se necessário):Finalmente, você pode pegar esses valores e desinstalar todos eles usando o seguinte:
Observe o uso do
-y
sinalizador parapip uninstall
evitar a confirmação da exclusão.fonte
Para aqueles que não possuem o pip instalado, encontrei este script rápido no github (funciona com o Python 2.7.13):
fonte
lista de pip [opções] Você pode ver a referência completa aqui
fonte
Pelo menos para o Ubuntu (talvez também para outros) funciona isso (inspirado em um post anterior neste tópico):
fonte