Je viens d'installer les modules python: construct
et statlib
avec setuptools
comme ça:
# Install setuptools to be able to download the following
sudo apt-get install python-setuptools
# Install statlib for lightweight statistical tools
sudo easy_install statlib
# Install construct for packing/unpacking binary data
sudo easy_install construct
Je veux pouvoir (par programmation) vérifier leurs versions. Existe-t-il un équivalent que python --version
je peux exécuter à partir de la ligne de commande?
Ma version python est 2.7.3
.
pip list
Réponses:
Je suggère d'utiliser pip à la place de easy_install . Avec pip, vous pouvez lister tous les packages installés et leurs versions avec
Dans la plupart des systèmes Linux, vous pouvez diriger cela vers
grep
(oufindstr
sur Windows) pour trouver la ligne du package particulier qui vous intéresse:Pour un module individuel, vous pouvez essayer l'
__version__
attribut , mais il existe des modules sans lui:Enfin, comme les commandes de votre question sont préfixées
sudo
, il semble que vous installez dans l'environnement global python. Il est fortement conseillé de se pencher sur les gestionnaires d' environnement virtuel python , par exemple virtualenvwrapperla source
pip show lxml | grep Version
; cela fonctionnera beaucoup plus rapidement, car il inspecte uniquement un seul paquet.pip list | grep lxml
grep
dans Windows? Depuis le gel de pip | grep lxml ne fonctionne pas sur windwos.pip list | findstr lxml
Tu peux essayer
la source
inspect
) n'ont__version__
malheureusement pas d' attribut.serial.VERSION
. Peut-être qu'il existe également d'autres modules couramment utilisés, qui ne suivent pas PEP 0396: python.org/dev/peps/pep-0396print(contruct.__version__)
si vous utilisez Python 3. *Utilisez le
pkg_resources
module distribué avec lasetuptools
bibliothèque. Notez que la chaîne que vous passez à laget_distribution
méthode doit correspondre à l'entrée PyPI.et si vous voulez l'exécuter à partir de la ligne de commande, vous pouvez faire:
Notez que la chaîne que vous transmettez à la
get_distribution
méthode doit être le nom du package tel qu'il est enregistré dans PyPI, pas le nom du module que vous essayez d'importer.Malheureusement, ce ne sont pas toujours les mêmes (par exemple vous le faites
pip install memcached
, maisimport memcache
).la source
__version__
.construct.version.full_version
pkg_resources.get_distrinbution
cela ne fonctionne pas toujours non plus. Il émet uneDistributionNotFound
exception avec un message d'erreur comme: "La distribution 'the_package_name' est introuvable et est requise par l'application"get_distribution
méthodeJe pense que cela peut aider mais installez d'abord le
show
paquet afin de l'exécuterpip show
puis utilisez show pour trouver la version!la source
pip: error: No command by the name pip show (maybe you meant "pip install show")
pip show PACKAGE | awk '/^Version: / {sub("^Version: ", ""); print}'
. Vous pourriez probablement vous en tirer avec un script AWK plus simple, mais celui-ci sera plus sûr pour tous les cas marginaux.pip show
été implémenté dans pip 1.2.1.post1 . Vous utilisez une version terriblement datée de pip, donc pas étonnant que vous ayez des problèmes! J'utilise actuellement pip 7.1.2 . Si quelque chose vous empêche de mettre à jour, vous pouvez toujours simplement l'installer localement ou dans un virtualenv.La meilleure façon de le faire est:
Pour les détails du package spécifique
pip show <package_name>
Pour plus de détails:
>>> pip help
pip
doit être mis à jour pour ce faire.Sous Windows, la commande recommandée est:
la source
pip show scikit-learn
place depip show sklearn
. sklearn est une forme abrégée utilisée lors de l'importation, ne pas reconnaître directementpip
carscikit-learn
le package complet apprend passklearn
En python3 avec des crochets autour de l'impression
la source
__version__
attribut.print
, tout comme(2)+(3)
évalue à5
. Lorsque vous avez une virgule entre parenthèses, les choses peuvent devenir légèrement plus intéressantes, bien queprint
cela fonctionne toujours, en quelque sorte.module.__version__
est une bonne première chose à essayer, mais cela ne fonctionne pas toujours.Si vous ne voulez pas décortiquer et que vous utilisez pip 8 ou 9, vous pouvez toujours utiliser
pip.get_installed_distributions()
pour obtenir des versions à partir de Python:mise à jour: la solution fonctionne ici dans les pip 8 et 9, mais dans la pip 10, la fonction a été déplacée de
pip.get_installed_distributions
àpip._internal.utils.misc.get_installed_distributions
pour indiquer explicitement qu'elle n'est pas destinée à un usage externe. Ce n'est pas une bonne idée de s'y fier si vous utilisez pip 10+.la source
pip
, cela devrait toujours fonctionner.Les réponses précédentes n'ont pas résolu mon problème, mais ce code a:
la source
__version__
s'il n'est pas défini. S'il n'y a pas__version__
, vous ne recevez aucun résultat pour le package que vous souhaitez.__version__
attribut, qui est la norme ( python.org/dev/peps/pep-0396/#specification ), il est impossible de savoir où et comment la version est incluse sans enquête manuelle.Vous pouvez utiliser
importlib_metadata
bibliothèque pour cela.Si vous êtes sur python
<3.8
, installez-le d'abord avec:Depuis python
3.8
il est inclus dans la bibliothèque standard.Ensuite, pour vérifier la version d'un package (dans cet exemple
lxml
), exécutez:Gardez à l'esprit que cela ne fonctionne que pour les packages installés à partir de PyPI. En outre, vous devez passer un nom de package en tant qu'argument à la
version
méthode, plutôt qu'un nom de module fourni par ce package (bien qu'ils soient généralement les mêmes).la source
Utilisez
dir()
pour savoir si le module a un__version__
attribut.la source
Si les méthodes ci-dessus ne fonctionnent pas, il vaut la peine d'essayer ce qui suit en python:
Voir Obtenir la version Python Tornado?
Remarque, cela a
.version
fonctionné pour moi sur quelques autres en plus de la tornade.la source
ajoutez d'abord python, pip à vos variables d'environnement. afin que vous puissiez exécuter vos commandes à partir de l'invite de commande. puis donnez simplement la commande python . puis importez le package
->
import scrapy
puis imprimez le nom de la version
->
print(scrapy.__version__)
Cela fonctionnera certainement
la source
__version__
attribut.pip freeze
cependant <package> .__ version_ a fonctionné. Merci d'avoir posté.En supposant que nous utilisons Jupyter Notebook (si vous utilisez Terminal, supprimez les points d'exclamation):
1) si le package (par exemple xgboost) a été installé avec pip :
2) si le paquet (par exemple caffe) a été installé avec conda :
la source
Certains modules n'ont pas d'
__version__
attribut, donc le moyen le plus simple est de vérifier dans le terminal:pip list
la source
Dans la version Python 3.8, il y a un nouveau
metadata
module dans leimportlib
package, qui peut également le faire.Voici un exemple de documents:
la source
Je suggère d'ouvrir un
python
shell dans le terminal (dans la version python qui vous intéresse), d'importer la bibliothèque et d'obtenir son__version__
attribut.Note 1: Il faut considérer la version python . Si nous avons installé différentes versions de python, nous devons ouvrir le terminal dans la version python qui nous intéresse. Par exemple, ouvrir le terminal avec
python3.8
peut (sûrement) donner une version différente d'une bibliothèque que l'ouverture avecpython3.5
oupython2.7
.Remarque 2: Nous évitons d'utiliser la
print
fonction , car son comportement dépend de python2 ou python3. Nous n'en avons pas besoin, le terminal affichera la valeur de l'expression.la source
Cela fonctionne aussi dans Jupyter Notebook sous Windows! Tant que Jupyter est lancé à partir d'une ligne de commande compatible bash telle que Git Bash (MingW64), les solutions données dans de nombreuses réponses peuvent être utilisées dans Jupyter Notebook sur les systèmes Windows avec un petit ajustement.
J'utilise Windows 10 Pro avec Python installé via Anaconda, et le code suivant fonctionne lorsque je lance Jupyter via Git Bash (mais pas lorsque je lance à partir de l'invite Anaconda).
Le tweak: ajoutez un point d'exclamation (
!
) devantpip
pour le faire!pip
.la source
Programme python rapide pour lister tous les paquets (vous pouvez le copier dans requirements.txt )
La sortie ressemblerait à:
la source
(voir également https://stackoverflow.com/a/56912280/7262247 )
J'ai trouvé assez peu fiable l'utilisation des différents outils disponibles (y compris le meilleur
pkg_resources
mentionné par la réponse de Jakub Kukul ), car la plupart d'entre eux ne couvrent pas tous les cas . Par exempleComme nous avions besoin d'un moyen fiable pour obtenir la version de n'importe quel package, module ou sous-module, j'ai fini par écrire getversion . C'est assez simple à utiliser:
Consultez la documentation pour plus de détails.
la source
Pour obtenir une liste des modules non standard (pip) importés dans le module actuel:
Résultat:
Remarque:
Ce code a été compilé à partir de solutions à la fois sur cette page et de Comment lister les modules importés?
la source
En résumé:
(Il fournira toutes les bibliothèques ainsi que les détails de la version).
Et:
(Il donne les détails complets de la bibliothèque).
la source
Vous pouvez essayer ceci:
Cela affichera tous les packages avec leurs versions. Production
la source
En m'appuyant sur la réponse de Jakub Kukul, j'ai trouvé un moyen plus fiable de résoudre ce problème.
Le principal problème de cette approche est que les packages doivent être installés "de manière conventionnelle" (et cela n'inclut pas l'utilisation
pip install --user
), ou être dans le système PATH lors de l'initialisation Python.Pour contourner cela, vous pouvez utiliser
pkg_resources.find_distributions(path_to_search)
. Cela recherche essentiellement les distributions qui seraient importables si elles se trouvaientpath_to_search
dans le système PATH.Nous pouvons parcourir ce générateur comme ceci:
Cela renverra un dictionnaire ayant des modules comme clés et leur version comme valeur. Cette approche peut être étendue à bien plus que le numéro de version.
Merci à Jakub Kukul d'avoir indiqué la bonne direction
la source
Écrire cette réponse pour les utilisateurs de Windows. Comme suggéré dans toutes les autres réponses, vous pouvez utiliser les déclarations comme:
Mais, certains modules n'impriment pas leur version même après avoir utilisé la méthode ci-dessus. Donc, ce que vous pouvez simplement faire, c'est:
la source
vous pouvez d'abord installer un paquet comme celui-ci, puis vérifier sa version
cela devrait vous donner la version du package
la source