Est-il possible de trouver tous les paquets Python PyPI qui ont été installés avec easy_install ou pip ? Je veux dire, à l’exclusion de tout ce qui a été/est installé avec les distributions outils (dans ce cas apt-get sur Debian).
Réponses
Trop de publicités?``va afficher une liste des packages installés et leur version. Il vous permet également d’écrire ces paquets vers un fichier qui permet ensuite de mettre en place un nouvel environnement.
http://www.PIP-installer.org/en/latest/index.html#freezing-Requirements
Depuis la version 1.3 de pip, vous pouvez maintenant utiliser``
Il a quelques options utiles, y compris la possibilité d’afficher les paquets obsolètes. Voici la documentation : http://www.pip-installer.org/en/latest/usage.html#pip-list
Si Debian se comporte comme les dernières versions d'Ubuntu concernant l' pip install
cible par défaut, c'est très simple: il s'installe à l' /usr/local/lib/
au lieu de /usr/lib
(apt
cible par défaut). Vérifier http://askubuntu.com/questions/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747
Je suis une ArchLinux utilisateur et comme je l'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'
La clé ici est - /usr/lib/python2.7/site-packages
, ce qui est le répertoire pip installe, YMMV. pacman -Qo
est comment l'Arche de la pac kage homme ager vérifie la propriété du fichier. No package
est de retour, il donne lorsqu'aucun paquet possède le fichier: error: No package owns $FILENAME
. Délicat solution de contournement: je suis l'interrogation sur __init__.py
car pacman -Qo
est un peu ignorants quand il s'agit de répertoires :(
Dans le but de le faire pour les autres distributions, vous devez savoir où la pip
installe des trucs (juste sudo pip install
quelque chose), comment interroger la propriété d'un fichier (Debian méthode est - dpkg -S
) et qu'est-ce que le "package n'est propriétaire que de" chemin de retour (Debian est - no path found matching pattern
). Les utilisateurs de Debian, méfiez-vous: dpkg -S
échouera si vous lui donnez un lien symbolique. Juste résoudre d'abord par l'aide d' realpath
. Comme ceci:
find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | xargs dpkg -S | grep 'no path found'
Le dessous est un peu lent, mais il donne un bien mis en forme de la liste des packages pip
est conscient. 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, c'est lent, c'est qu'il affiche le contenu de l'ensemble de pypi repo. J'ai déposé un ticket suggérant pip --list
fournissent des fonctionnalités similaires, mais plus efficacement.
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)
$