Avec pip, est-il possible de déterminer quelle version d'un paquet est actuellement installée?
Je connais pip install XYZ --upgrade
mais je me demande s’il existe quelque chose comme pip info XYZ
. Sinon, quel serait le meilleur moyen de savoir quelle version j'utilise actuellement?.
A partir de pip 1.3 , il existe une commande pip show
.
$ pip show Jinja2
---
Name: Jinja2
Version: 2.7.3
Location: /path/to/virtualenv/lib/python2.7/site-packages
Requires: markupsafe
Dans les versions plus anciennes, pip freeze
et grep
devraient faire l'affaire.
$ pip freeze | grep Jinja2
Jinja2==2.7.3
Je viens d'envoyer une demande de tirage au pip avec l'amélioration Hugo Tavares a déclaré:
(specloud comme exemple)
$ pip show specloud
Package: specloud
Version: 0.4.4
Requires:
nose
figleaf
pinocchio
Le Pip 1.3 a maintenant aussi une commande list :
$ pip list
argparse (1.2.1)
pip (1.5.1)
setuptools (2.1)
wsgiref (0.1.2)
et avec --outdated comme argument supplémentaire, vous obtiendrez la version actuelle et la version la plus récente des paquets que vous utilisez:
$ pip list --outdated
distribute (Current: 0.6.34 Latest: 0.7.3)
Django-bootstrap3 (Current: 1.1.0 Latest: 4.3.0)
Django (Current: 1.5.4 Latest: 1.6.4)
Jinja2 (Current: 2.6 Latest: 2.8)
Donc, en combinant avec la réponse de AdamKG:
$ pip list --outdated | grep Jinja2
Jinja2 (Current: 2.6 Latest: 2.8)
Vérifiez également pip-tools: https://github.com/nvie/pip-tools
Vous pouvez également installer yolk
, puis exécuter yolk -l
, qui donne également une sortie Nice. Voici ce que je reçois pour ma petite virtualenv:
(venv)CWD> /space/vhosts/pyramid.xcode.com/venv/build/unittest
project@pyramid 43> yolk -l
Chameleon - 2.8.2 - active
Jinja2 - 2.6 - active
Mako - 0.7.0 - active
MarkupSafe - 0.15 - active
PasteDeploy - 1.5.0 - active
Pygments - 1.5 - active
Python - 2.7.3 - active development (/usr/lib/python2.7/lib-dynload)
SQLAlchemy - 0.7.6 - active
WebOb - 1.2b3 - active
account - 0.0 - active development (/space/vhosts/pyramid.xcode.com/project/account)
distribute - 0.6.19 - active
egenix-mx-base - 3.2.3 - active
ipython - 0.12 - active
logilab-astng - 0.23.1 - active
logilab-common - 0.57.1 - active
nose - 1.1.2 - active
pbkdf2 - 1.3 - active
pip - 1.0.2 - active
pyScss - 1.1.3 - active
pycrypto - 2.5 - active
pylint - 0.25.1 - active
pyramid-debugtoolbar - 1.0.1 - active
pyramid-tm - 0.4 - active
pyramid - 1.3 - active
repoze.lru - 0.5 - active
simplejson - 2.5.0 - active
transaction - 1.2.0 - active
translationstring - 1.1 - active
venusian - 1.0a3 - active
waitress - 0.8.1 - active
wsgiref - 0.1.2 - active development (/usr/lib/python2.7)
yolk - 0.4.3 - active
zope.deprecation - 3.5.1 - active
zope.interface - 3.8.0 - active
zope.sqlalchemy - 0.7 - active
Vous pouvez utiliser la commande grep pour le savoir.
pip show <package_name>|grep Version
Exemple:
pip show urllib3|grep Version
montrera que les versions.
Métadonnées-Version: 2.0
Version: 1.12
Le moyen le plus simple est le suivant:
import jinja2
print jinja2.__version__
Sur Windows, vous pouvez émettre des commandes telles que:
pip show setuptools | findstr "Version"
Sortie:
Version: 34.1.1
En question, il n'est pas mentionné quel utilisateur du système d'exploitation utilise (Windows/Linux/Mac)
Comme il existe quelques réponses qui fonctionneront parfaitement sur Mac et Linux.
La commande ci-dessous peut être utilisée si l'utilisateur essaie de trouver la version d'un paquet python sur Windows.
Dans PowerShell, utilisez la commande ci-dessous:
pip list | findstr <PackageName>
Exemple: - pip list | findstr requests
Sortie: requests 2.18.4
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 sur la capture d'écran ici, j'utilise cette méthode pour vérifier la version du module série.
Il existe également un outil appelé pip-check
qui vous donne un aperçu rapide de tous les paquetages installés et de leur statut de mise à jour:
Je ne l'ai pas utilisé moi-même; Je suis tombé par hasard dessus et cette SO question s’est rapidement succédé, et comme cela n’a pas été mentionné ...