Existe-t-il un moyen de trouver tous les packages 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 outils de distribution (dans ce cas, apt-get sur Debian).
python
pip
easy-install
pypi
Jürgen A. Erhard
la source
la source
Réponses:
pip freeze
affichera une liste des packages installés et leurs versions. Il vous permet également d'écrire ces packages dans un fichier qui peut ensuite être utilisé pour configurer un nouvel environnement.https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze
la source
pip freeze
etpip list
listez tout. Ils n'excluent pas les packages qui n'ont pas été installés parpip
.pip freeze
fiable dans les scripts, alorspip list
qu'il générera des erreurs inattendues lorsqu'il sera utilisé avec des tuyaux.pip list -l
Oupip list --local
est la meilleure réponse, voir stackoverflow.com/a/43012269/491884 par @MJBDepuis la version 1.3 de pip, vous pouvez maintenant utiliser
pip list
Il a quelques options utiles, y compris la possibilité d'afficher des packages obsolètes. Voici la documentation: https://pip.pypa.io/en/latest/reference/pip_list/
la source
pip freeze
pip list --user
affiche uniquement les packages installés par l'utilisateur et exclut les packages à l'échelle du système.Si quelqu'un se demande, vous pouvez utiliser la commande «pip show».
Cela répertorie le répertoire d'installation du package donné.
la source
Si Debian se comporte comme les versions récentes d'Ubuntu concernant la
pip install
cible par défaut, c'est très simple: il s'installe à la/usr/local/lib/
place de/usr/lib
(apt
cible par défaut). Vérifiez /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747Je suis un utilisateur ArchLinux et comme j'ai expérimenté avec pip, j'ai rencontré ce même problème. Voici comment je l'ai résolu dans Arch.
La clé ici est
/usr/lib/python2.7/site-packages
, qui est le répertoire d'installation de pip, YMMV.pacman -Qo
est la façon dont pac kage man ager d' Arch vérifie la propriété du fichier.No package
fait partie du retour , il donne quand aucun paquet est propriétaire du fichier:error: No package owns $FILENAME
. Solution de contournement délicate: je pose des questions__init__.py
parce que je suispacman -Qo
un peu ignorant en ce qui concerne les répertoires :(Pour le faire pour d'autres distributions, vous devez savoir où
pip
installe les trucs (justesudo pip install
quelque chose), comment interroger la propriété d'un fichier (la méthode Debian / Ubuntu l'estdpkg -S
) et quel est le retour «aucun paquet ne possède ce chemin» (Debian / Ubuntu estno path found matching pattern
). Utilisateurs Debian / Ubuntu, attention:dpkg -S
échouera si vous lui donnez un lien symbolique. Résolvez-le d'abord en utilisantrealpath
. Comme ça:Les utilisateurs de Fedora peuvent essayer (merci @eddygeek):
la source
dpkg
écris l'erreur dans stderr donc je dois ajouter une redirection2>&1
. Et pour la sortie internationale, ajoutezLANG=
devantxargs dpkg -s
. etsed
c'est aussi un bon outil;) pour ne garder que le nom du paquet du chemin. Je me retrouve donc avec: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/"
Commencer avec:
Pour répertorier tous les packages. Une fois que vous avez trouvé le package souhaité, utilisez:
Cela vous montrera des détails sur ce package, y compris son dossier. Vous pouvez ignorer la première partie si vous connaissez déjà le nom du package
Cliquez ici pour plus d'informations sur le pip show et ici pour plus d'informations sur la liste des pip.
Exemple:
la source
pip.get_installed_distributions()
donnera une liste des packages installésla source
Ce qui suit est un peu lent, mais il donne une liste de packages bien formatés qui
pip
sont au courant. C'est-à-dire que tous n'ont pas été installés "par" pip, mais tous devraient pouvoir être mis à niveau par pip.La raison pour laquelle il est lent est qu'il répertorie le contenu de l'ensemble du repo pypi. J'ai déposé un ticket suggérant de
pip list
fournir des fonctionnalités similaires mais plus efficacement.Exemple de sortie: (restreint la recherche à un sous-ensemble au lieu de '.' Pour tous.)
la source
Ajoutant à la réponse de @Paul Woolcock,
créera un fichier d'exigences avec tous les packages installés ainsi que les numéros de version installés dans l'environnement actif à l'emplacement actuel. Fonctionnement
va installer les packages spécifiés dans le fichier des exigences.
la source
Les nouvelles versions de pip ont la possibilité de faire ce que l'OP veut via
pip list -l
oupip freeze -l
(--list
).Sur Debian (au moins), la page de manuel ne le dit pas clairement, et je ne l'ai découvert - sous l'hypothèse que la fonctionnalité doit exister - qu'avec
pip list --help
.Il y a des commentaires récents qui suggèrent que cette fonctionnalité n'est pas évidente dans la documentation ou les réponses existantes (bien que suggérées par certains), donc j'ai pensé que je devrais poster. J'aurais préféré le faire en commentaire, mais je n'ai pas les points de réputation.
la source
pip freeze --local
depuis 8 ans.pip list --local
est également disponible ... mais notez que la question OP ne concerne pas les environnements virtuels (qui le--local
supportent) mais le discernement des packages de distribution à partir dessudo pip install
packages.Notez que si plusieurs versions de Python sont installées sur votre ordinateur, vous pouvez avoir quelques versions de pip associées à chacune.
Selon vos associations, vous devrez peut-être faire très attention à la commande pip que vous utilisez:
A fonctionné pour moi, où j'utilise Python3.4. La simple utilisation a
pip list
renvoyé l'erreurThe program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip
.la source
Comme l'a souligné @almenon, cela ne fonctionne plus et ce n'est pas le moyen pris en charge pour obtenir des informations sur le package dans votre code. Ce qui suit soulève une exception:
Pour ce faire, vous pouvez importer
pkg_resources
. Voici un exemple:Je suis dessus
v3.6.5
la source
Voici le one-liner pour fedora ou autres distributions de tours (basé sur les conseils de @barraponto):
Ajoutez ceci à la commande précédente pour obtenir une sortie plus propre:
la source
Récupérez tous les noms de fichiers / dossiers
site-packages/
(etdist-packages/
s'ils existent) et utilisez votre gestionnaire de packages pour supprimer ceux qui ont été installés via le package.la source
pip freeze répertorie tous les packages installés même si ce n'est pas par pip / easy_install. Sur CentOs / Redhat, un package installé via rpm est trouvé.
la source
Si vous utilisez la distribution python Anaconda , vous pouvez utiliser la
conda list
commande pour voir ce qui a été installé par quelle méthode:Pour récupérer les entrées installées par
pip
(y compris éventuellementpip
lui - même):Bien sûr, vous voudrez probablement simplement sélectionner la première colonne, ce que vous pouvez faire (à l'exclusion
pip
si nécessaire):Enfin, vous pouvez récupérer ces valeurs et pip les désinstaller toutes en utilisant ce qui suit:
Notez l'utilisation du
-y
drapeau pourpip uninstall
éviter d'avoir à confirmer la suppression.la source
Pour ceux qui n'ont pas installé pip, j'ai trouvé ce script rapide sur github (fonctionne avec Python 2.7.13):
la source
liste pip [options] Vous pouvez voir la référence complète ici
la source
Au moins pour Ubuntu (peut - être aussi d' autres) fonctionne ce (inspiré d'un précédent post dans ce fil):
la source