À l'aide de pip, est-il possible de déterminer quelle version d'un package est actuellement installée?
Je sais, pip install XYZ --upgrade
mais je me demande s'il y a quelque chose comme ça pip info XYZ
. Sinon, quelle serait la meilleure façon de savoir quelle version j'utilise actuellement.
show
commande dans pip: github.com/pypa/pip/issues/33Réponses:
Depuis le pip 1.3 , il existe une
pip show
commande.Dans les anciennes versions,
pip freeze
etgrep
devrait bien faire le travail.la source
save
nom.pip show pip
pour obtenir les informations de version de pip, plutôt quepip --version
comme je m'y attendais.pip freeze
présente l'avantage d'afficher correctement les versions de contrôle VCS modifiables, alors que cepip show
n'est pas le cas.Je viens d'envoyer une demande de pull dans pip avec l'amélioration Hugo Tavares a déclaré:
(specloud comme exemple)
la source
Pip 1.3 a désormais également une commande list :
la source
pip list
sont génériques et__version__
ne le sont pas. J'ai aussi vuversion()
etget_version()
pour celui importé.et avec --outdated comme argument supplémentaire, vous obtiendrez les versions actuelles et les plus récentes des packages que vous utilisez:
Donc, en combinant avec la réponse d'AdamKG:
Vérifiez également les outils pip : https://github.com/nvie/pip-tools
la source
Vous pouvez également installer
yolk
puis exécuteryolk -l
ce qui donne également une belle sortie. Voici ce que j'obtiens pour mon petit virtualenv:la source
Vous pouvez utiliser la commande grep pour le savoir.
Exemple:
n'affichera que les versions.
la source
La façon la plus simple est la suivante:
la source
__version__
dans leur code source. De nombreux packages ne le font pas.import
et la sortie depip freeze
.Il existe également un outil appelé
pip-check
qui vous donne un aperçu rapide de tous les packages installés et de leur état de mise à jour:Je ne l'ai pas utilisé moi-même; je suis juste tombé dessus et cette question SO en succession rapide, et comme elle n'a pas été mentionnée ...
la source
Sous Windows, vous pouvez exécuter des commandes telles que:
Production:
la source
La fonction python ne renvoyant que la version du package dans un format lisible par machine:
Avant python 3.8:
L'équivalent bash (ici également invoqué depuis python) serait beaucoup plus complexe (mais plus robuste - voir prudence ci-dessous):
Exemple d'utilisation:
Notez que dans les deux cas, le
pkg_name
paramètre doit contenir le nom du package au format renvoyé parpip freeze
et non tel qu'il est utilisé pendantimport
, par exemple,scikit-learn
passklearn
ouFlask-Caching
pasflask_caching
.Notez que bien que l'invocation
pip freeze
dans la version bash puisse sembler inefficace, seule cette méthode s'avère suffisamment robuste pour empaqueter les particularités et les incohérences de nommage (par exemple, les soulignés vs les tirets, les petites vs les grandes majuscules et les abréviations telles quesklearn
vsscikit-learn
).Attention: dans les environnements complexes, les deux variantes peuvent renvoyer des numéros de version surprenants, incompatibles avec ce que vous pouvez réellement obtenir pendant
import
.Un tel problème se pose lorsqu'il existe d'autres versions du package cachées dans un sous-dossier utilisateur
site-packages
. Pour illustrer les dangers de l'utilisation,version()
voici une situation que j'ai rencontrée:Un autre problème est d'avoir certains packages installés par conda dans le même environnement. S'ils partagent des dépendances avec vos packages installés par pip et que les versions de ces dépendances diffèrent, vous pouvez obtenir des rétrogradations de vos dépendances installées par pip.
Pour illustrer, la dernière version de
numpy
disponible dans PyPI le 01-01-2020 était 1.18.0, tandis que dans le même temps laconda-forge
chaîne d'Anaconda n'avait que la version 1.17.3numpy
comme dernière. Ainsi, lorsque vous avez installé unbasemap
package avec conda (comme deuxième), votre ancien pip installénumpy
serait rétrogradé par conda à 1.17.3, et la version 1.18.0 deviendrait indisponible pour laimport
fonction. Dans ce cas, ceversion()
serait bien etpip freeze
/ ouconda list
mal:la source
importlib.metadata.version('NameOfProject')
? docs.python.org/3/library/…from importlib_metadata import version; version('Flask-Caching')
python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"
?version()
renvoie toujours la plus ancienne (la plus ancienne) (2.2.3). Vous pouvez répliquer ce résultat en installant les deux versions avec le--user
commutateur, mais en préservant manuellement lelightgbm-2.2.3.dist-info
dossier, pour les avoir ensemble, comme indiqué ci-dessus (pip le supprimerait normalement - jusqu'à ce qu'il ne le fasse pas).pip show fonctionne en python 3.7:
la source
Pour ce faire, en utilisant du code Python:
En utilisant
importlib.metadata.version
Python ≥3,8
Python ≤3,7
(en utilisant
importlib_metadata.version
)En utilisant
pkg_resources.Distribution
Crédité aux commentaires de sinoroc et mirekphd .
la source
Pour Windows, vous pouvez
ouvrez cmd et tapez python, appuyez sur entrée.
tapez l'importation et appuyez sur Entrée.
tapez ._version__ et appuyez sur Entrée.
Comme vous pouvez le voir dans la capture d'écran ici, j'utilise cette méthode pour vérifier la version du module série.
la source
En question, il n'est pas mentionné quel utilisateur du système d'exploitation utilise (Windows / Linux / Mac)
Comme il y a quelques réponses qui fonctionneront parfaitement sur Mac et Linux.
La commande ci-dessous peut être utilisée au cas où l'utilisateur essaie de trouver la version d'un package python sur Windows.
Dans PowerShell, utilisez la commande ci-dessous:
pip list | findstr <PackageName>
Exemple:-
pip list | findstr requests
Production :
requests 2.18.4
la source