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).
A partir da versão 1.3 do pip você já pode usar o pip list
Tem 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/
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