Trouver tous les paquets installés avec une installation facile/pip?
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
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 /
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é.
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'
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
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
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)
$
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
.
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.
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.
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+)/__.*::'
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.
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.
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
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.