Trouver tous les paquets installés avec une installation facile/pip?

y a-t-il un moyen de trouver tous les paquets PyPI de Python qui ont été installés avec easy_install ou pip? Je veux dire, en excluant tout ce qui a été/est installé avec les outils de distributions (dans ce cas apt-get sur Debian).

336
demandé sur suci 2011-07-06 22:00:02

15 réponses

pip freeze affichera une liste des paquets installés et leurs versions. Il vous permet également d'écrire ces paquets dans un fichier qui peut ensuite être utilisée pour définir un nouvel environnement.

https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze

329
répondu Paul Woolcock 2017-11-02 13:31:50

depuis la version 1.3 de pip, vous pouvez maintenant utiliser pip list

il a quelques options utiles, y compris la possibilité d'Afficher des paquets périmés. Voici la documentation: https://pip.pypa.io/en/latest/reference/pip_list /

221
répondu keybits 2015-12-03 22:44:27

si quelqu'un se demande, vous pouvez utiliser la commande 'pip show'.

pip show [options] <package>

indique le répertoire d'installation du paquet donné.

128
répondu Daniel Sikes 2014-10-24 01:03:49

si Debian se comporte comme les versions récentes D'Ubuntu en ce qui concerne la cible par défaut pip install , c'est très simple: il s'installe sur /usr/local/lib/ au lieu de /usr/lib ( apt cible par défaut). Vérifier https://askubuntu.com/questions/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747

Je suis un utilisateur D'ArchLinux et comme j'ai expérimenté avec pip j'ai rencontré ce même problème. Voici comment je l'ai résolu en Arc.

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs pacman -Qo | grep 'No package'

clé voici /usr/lib/python2.7/site-packages , qui est le répertoire où pip installe, YMMV. pacman -Qo Arch pac kage homme ager vérifie la propriété du fichier. No package fait partie de la déclaration lorsqu'Aucun paquet ne possède le fichier: error: No package owns $FILENAME . Contournements difficiles: je pose des questions sur __init__.py parce que pacman -Qo est un peu ignorant quand il s'agit de répertoires: (

pour le faire pour d'autres distros, vous devez trouver où pip installe des trucs (juste sudo pip install quelque chose), comment interroger la propriété d'un fichier (la méthode Debian/Ubuntu est dpkg -S ) et quel est le retour" aucun paquet ne possède ce chemin "(Debian/Ubuntu est no path found matching pattern ). Utilisateurs Debian / Ubuntu, attention: dpkg -S échouera si vous lui donnez un lien symbolique. Il suffit de résoudre d'abord en utilisant realpath . Comme ceci:

find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | xargs dpkg -S 2>&1 | grep 'no path found'

Fedora les utilisateurs peuvent essayer (merci @eddygeek):

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'
21
répondu Capi Etheriel 2017-07-02 07:39:46

commence par:

$ pip list

pour lister tous les paquets. Une fois que vous avez trouvé le paquet que vous voulez, utilisez:

$ pip show <package-name>

cela vous montrera les détails de ce paquet, y compris son dossier. Vous pouvez sauter la première partie si vous connaissez déjà le nom du paquet

, Cliquez sur ici pour plus d'informations sur le pep, de spectacle et de ici pour plus d'informations sur le pep liste.

exemple:

$ 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: jupyter@googlegroups.org
License: BSD
Location: /usr/local/lib/python2.7/site-packages
Requires: ipywidgets, nbconvert, notebook, jupyter-console, qtconsole, ipykernel    
12
répondu ng10 2017-06-05 17:10:23

pip.get_installed_distributions() donnera une liste des paquets installés

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
6
répondu yegle 2014-01-21 06:33:02

ce qui suit est un peu lent, mais il donne une liste bien formatée des paquets que pip connaît. C'est-à-dire, pas tous d'entre eux ont été installés "par" pip, mais tous devraient pouvoir être mis à niveau par le pip.

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

la raison pour laquelle il est lent est qu'il liste le contenu de l'ensemble PyPI repo. J'ai déposé un billet suggérant pip list fournir une fonctionnalité similaire, mais plus efficace.

Exemple de sortie: (restreint la recherche à un sous-ensemble au lieu de '."pour tous.)

$ 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)
$
6
répondu MarkHu 2017-07-19 19:44:32

notez que si vous avez plusieurs versions de Python installées sur votre ordinateur, vous pouvez avoir quelques versions de pip associées à chacune.

selon vos associations, vous pourriez avoir besoin d'être très prudent sur la commande pip que vous utilisez:

pip3 list 

a fonctionné pour moi, où J'exécute Python3.4. Il suffit d'utiliser pip list pour retourner l'erreur The program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip .

4
répondu ntk4 2016-09-24 21:41:07

ajoutant à la réponse de @Paul Woolcock,

$ pip freeze > requirements.txt

va créer un fichier d'exigences avec tous les paquets installés dans l'environnement actif à l'emplacement actuel que vous pouvez exécuter

$ pip install -r requirements.txt

pour installer les exigences dans un autre environnement.

3
répondu All Іѕ Vаиітy 2017-01-03 06:07:19

les nouvelles versions de pip ont la capacité de faire ce que L'OP veut via pip à la liste de l ou pip freeze -l . Sur Debian (au moins) , la page de manuel ne le dit pas clairement, et je ne l'ai découvert - en partant du principe que la fonctionnalité doit exister - qu'avec PIP list --help .

certains commentaires récents laissent entendre que cette caractéristique n'est évidente ni dans la documentation ni dans les documents existants. réponses (même si a laissé entendre à certains), j'ai donc pensé que je devrais poster. J'aurais préféré faire un commentaire, mais je n'ai pas de points de réputation.

3
répondu MJB 2017-03-25 03:40:54

Voici la doublure Pour fedora ou d'autres distros rpm (basé sur @barraponto tips):

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'

ajoutez ceci à la commande précédente pour obtenir une sortie plus propre:

 | sed -r 's:.*/(\w+)/__.*::'
2
répondu eddygeek 2014-03-24 15:14:34

récupérez tous les noms de fichiers/dossiers dans site-packages/ (et dist-packages/ s'il existe), et utilisez votre gestionnaire de paquets pour supprimer ceux qui ont été installés via paquet.

1
répondu Ignacio Vazquez-Abrams 2011-07-06 18:02:55

pip freeze liste tous les paquets installés, même si ce n'est pas pip/easy_install. Sur CentOs / Redhat on trouve un paquet installé par rpm.

1
répondu user3013438 2013-11-20 14:10:24

au moins pour Ubuntu (peut-être aussi d'autres) fonctionne ce (inspiré par un précédent post dans ce fil):

printf "Installed with pip:";
pip list 2>/dev/null | gawk '{print ;}' | 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
0
répondu keypress 2018-04-05 10:41:46

si vous utilisez la distribution Anaconda Python, vous pouvez utiliser la commande conda list pour voir ce qui a été installé par quelle méthode:

user@pc:~ $ 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

pour saisir les entrées installées par pip (y compris éventuellement pip lui-même):

user@pc:~ $ 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>

bien sûr, vous voulez probablement juste sélectionner la première colonne, que vous pouvez faire avec (à l'exclusion de pip si nécessaire):

user@pc:~ $ conda list | awk ' ~ /pip/ {if ( != "pip") print }'
amqp        
astroid
billiard
blinker
ez-setup
feedgenerator 

enfin, vous pouvez saisir ces valeurs et Pip désinstaller toutes en utilisant ce qui suit:

user@pc:~ $ conda list | awk ' ~ /pip/ {if ( != "pip") print }' | xargs pip uninstall -y

noter l'utilisation du drapeau -y pour le pip uninstall pour éviter d'avoir à donner une confirmation à supprimer.

0
répondu C S 2018-05-23 00:48:34