python - pacotes - linux instalar pip




Encontre todos os pacotes instalados com easy_install/pip? (11)

Existe uma maneira de encontrar todos os pacotes PyPI Python que foram instalados com o easy_install ou o pip? Quero dizer, excluindo tudo o que foi / é instalado com as ferramentas de distribuições (neste caso o apt-get no Debian).



Adicionando a resposta do @Paul Woolcock,

$ pip freeze > requirements.txt

criará um arquivo de requisitos com todos os pacotes instalados no ambiente ativo no local atual que você pode executar

$ pip install -r requirements.txt

para instalar os requisitos em outro ambiente.


Começar com:

$ pip list

Para listar todos os pacotes. Depois de encontrar o pacote desejado, use:

$ pip show <package-name>

Isso mostrará detalhes sobre este pacote, incluindo sua pasta. Você pode pular a primeira parte se já souber o nome do pacote

Clique here para mais informações sobre o pip show e https://pip.pypa.io/en/latest/reference/pip_list/ para mais informações sobre a lista de pip.

Exemplo:

$ pip show jupyter
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: [email protected].org
License: BSD
Location: /usr/local/lib/python2.7/site-packages
Requires: ipywidgets, nbconvert, notebook, jupyter-console, qtconsole, ipykernel    

O abaixo é um pouco lento, mas dá uma lista bem formatada de pacotes que o pip está ciente. Ou seja, nem todos eles foram instalados "por" pip, mas todos eles devem poder ser atualizados pelo pip.

$ pip search . | egrep -B1 'INSTALLED|LATEST'

A razão pela qual é lento é que ele lista o conteúdo de todo o repositório pypi. Eu arquivei um ticket sugerindo que a pip list fornece funcionalidade semelhante, mas de forma mais eficiente.

Exemplo de saída: (restringiu a pesquisa a um subconjunto em vez de '.' Para todos.)

$ pip search selenium | egrep -B1 'INSTALLED|LATEST'

selenium                  - Python bindings for Selenium
  INSTALLED: 2.24.0
  LATEST:    2.25.0
--
robotframework-selenium2library - Web testing library for Robot Framework
  INSTALLED: 1.0.1 (latest)
$

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 delas.

Dependendo de suas associações, talvez seja necessário ter muito cuidado com o comando pip usado:

pip3 list 

Trabalhei para mim, onde estou executando o Python3.4. Simplesmente usando pip list retornou o erro The program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip The program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip .


Obtenha todos os nomes de arquivos / pastas em site-packages/ (e dist-packages/ if exists), e use seu gerenciador de pacotes para remover os que foram instalados via pacote.


Pelo menos para o Ubuntu (talvez também outros) funciona isso (inspirado por um post anterior neste tópico):

printf "Installed with pip:";
pip list 2>/dev/null | gawk '{print $1;}' | while read; do pip show "${REPLY}" 2>/dev/null | grep 'Location: /usr/local/lib/python2.7/dist-packages' >/dev/null; if (( $? == 0 )); then printf " ${REPLY}"; fi; done; echo

Se alguém está se perguntando, você pode usar o comando 'pip show'.

pip show [options] <package>

Isto irá listar o diretório de instalação do pacote fornecido.


Se você usar a distribuição python do Anaconda , você pode usar o comando conda list para ver o que foi instalado por qual método:

[email protected]:~ $ conda list
# packages in environment at /anaconda3:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0            py36h2fc01ae_0
alabaster                 0.7.10           py36h174008c_0
amqp                      2.2.2                     <pip>
anaconda                  5.1.0                    py36_2
anaconda-client           1.6.9                    py36_0

Para pegar as entradas instaladas pelo pip (incluindo possivelmente o próprio pip ):

[email protected]:~ $ conda list | grep \<pip
amqp                      2.2.2                     <pip>
astroid                   1.6.2                     <pip>
billiard                  3.5.0.3                   <pip>
blinker                   1.4                       <pip>
ez-setup                  0.9                       <pip>
feedgenerator             1.9                       <pip>

É claro que você provavelmente quer apenas selecionar a primeira coluna, a qual você pode fazer (excluindo o pip se necessário):

[email protected]:~ $ conda list | awk '$3 ~ /pip/ {if ($1 != "pip") print $1}'
amqp        
astroid
billiard
blinker
ez-setup
feedgenerator 

Finalmente, você pode pegar esses valores e pip desinstalar todos eles usando o seguinte:

[email protected]:~ $ conda list | awk '$3 ~ /pip/ {if ($1 != "pip") print $1}' | xargs pip uninstall -y

Observe o uso do sinalizador -y para a pip uninstall do pip uninstall para evitar a confirmação de exclusão.


Versões mais recentes do pip têm a capacidade de fazer o que o OP quer via pip -l ou pip freeze -l . No Debian (pelo menos) a página man não deixa isso claro, e eu só a descobri - supondo que o recurso deve existir - com o pip list --help .

Há comentários recentes que sugerem que esse recurso não é óbvio nem na documentação nem nas respostas existentes (embora sugerido por alguns), então pensei em postar. Eu teria preferido fazer isso como um comentário, mas não tenho pontos de reputação.


pip.get_installed_distributions() dará uma lista de pacotes instalados

import pip
from os.path import join

for package in pip.get_installed_distributions():
    print(package.location) # you can exclude packages that's in /usr/XXX
    print(join(package.location, package._get_metadata("top_level.txt"))) # root directory of this package




pypi