Cum să verificați versiunea de module python?

Tocmai am instalat python module: construct " și "statlib" cu " setuptools astfel:

# 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

Vreau să fie în măsură să (programatic) verifica versiunile lor. Există un echivalent `python --version pot rula din linia de comandă?

Meu versiunea python este 2.7.3.

Comentarii la întrebare (3)
Soluția

Am sugerăm să utilizați pip în loc de easy_install. Cu pip, puteți lista toate pachetele instalate și versiunile lor cu

pip freeze

În cele mai multe sisteme linux, puteți țeavă asta `grep "(sau " findstr exe pe Windows) pentru a găsi rând pentru pachetul special de tine're interesat în:

Linux:
$ pip freeze | grep lxml
lxml==2.3

Windows:
c:\> pip freeze | findstr lxml
lxml==2.3

Pentru un anumit modul, puteți încerca __versiune__ atribut, cu toate acestea, există module fără ea:

$ python -c "import requests; print(requests.__version__)"
2.14.2
$ python -c "import lxml; print(lxml.__version__)"
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'module' object has no attribute '__version__'

În cele din urmă, în calitate de comenzi în cauză sunt prefixate cu "sudo", se pare că're instalarea la nivel mondial python mediu. Sfatuim sa ia uită-te în python mediu virtual managerii, de exemplu, virtualenvwrapper

Comentarii (7)

Puteți încerca

>>> import statlib
>>> print statlib.__version__

>>> import construct
>>> print contruct.__version__
Comentarii (8)

Folosesc pkg_resourcesmodule distribuite cu setuptools biblioteca. Rețineți că șirul de get_distribution metodă ar trebui să corespundă la PyPI intrare.

>>> import pkg_resources
>>> pkg_resources.get_distribution("construct").version
'2.5.2'

și dacă vrei să-l rulați de la linia de comandă puteți face:

python -c "import pkg_resources; print(pkg_resources.get_distribution('construct').version)"

Rețineți că șirul pe care le trece în get_distribution` metodă ar trebui să fie numele pachetului cum a fost înregistrată în PyPI, nu numele modulului că sunteți încercarea de a importa.

Din păcate, acestea nu sunt't întotdeauna aceeași (de ex. faci pip instala memcached", ci " de import memcache).

Comentarii (7)

Cred că acest lucru poate ajuta, dar în primul rând instala arată pachet în scopul de a rula pip show apoi, utilizați show pentru a găsi versiunea!

sudo pip install show
# in order to get package version execute the below command
sudo pip show YOUR_PACKAGE_NAME | grep Version
Comentarii (6)

Cel Mai bun mod de a face asta este:


Pentru detalii specifice Pachetului

pip show <nume_pachet>

Acesta detaliile Nume_pachet, Versiune, Autor, Locație etc.


$ pip show numpy
Name: numpy
Version: 1.13.3
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: numpy-discussion@python.org
License: BSD
Location: c:\users\prowinjvm\appdata\local\programs\python\python36\lib\site-packages
Requires:

Pentru mai multe Detalii: `>>> pip ajuta


`pip` ar trebui să fie actualizate pentru a face acest lucru.
pip install --upgrade pip

Pe Windows se recomanda comanda este:

python -m pip install --upgrade pip

Comentarii (2)

În python3 cu paranteze în jurul valorii de imprimare

>>> import celery
>>> print(celery.__version__)
3.1.14
Comentarii (3)

modul.__versiune__ este un bun primul lucru pentru a încerca, dar nu't întotdeauna de lucru.

Dacă tu nu't doriți să plăti, și te're folosind pip 8 sau 9, puteți utiliza în continuare pip.get_installed_distributions() pentru a obține versiunile din cadrul Python:

actualizare: soluția funcționează în pip 8 și 9, dar în pip 10 funcția a fost mutat de la `pip.get_installed_distributions " la " pip._internal.utils.misc.get_installed_distributions să indice în mod explicit, că-l's nu pentru uz extern. L's nu este o idee bună să se bazeze pe ea dacă're folosind pip 10+.

import pip

pip.get_installed_distributions()  # -> [distribute 0.6.16 (...), ...]

[
    pkg.key + ': ' + pkg.version
    for pkg in pip.get_installed_distributions()
    if pkg.key in ['setuptools', 'statlib', 'construct']
] # -> nicely filtered list of ['setuptools: 3.3', ...]
Comentarii (2)

Răspunsurile anterioare nu a rezolvat problema mea, dar acest cod a făcut:

import sys 
for name, module in sorted(sys.modules.items()): 
  if hasattr(module, '__version__'): 
    print name, module.__version__ 
Comentarii (2)

Utilizați dir() pentru a afla dacă modulul are o `versiune` atribut la toate.

>>> import selenium
>>> dir(selenium)
['__builtins__', '__doc__', '__file__', '__name__',
 '__package__', '__path__', '__version__']
>>> selenium.__version__
'3.141.0'
>>> selenium.__path__
['/venv/local/lib/python2.7/site-packages/selenium']
Comentarii (1)

Puteți folosi importlib_metadata` biblioteca pentru acest lucru.

Daca're pe python <3.8, instalați în primul rând cu: pip instala importlib_metadata Deoarece python `3.8 l's incluse în biblioteca standard.

Apoi, pentru a verifica un pachet de's version (în acest exemplu lxml) run:

``

de la importlib_metadata versiunea de import versiune('lxml') '4.3.1' ``

Păstrați în minte că acest lucru funcționează doar pentru pachetele instalate de la PyPI. De asemenea, trebuie să treacă un nume de pachet ca un argument la "version" metodă, mai degrabă decât un nume modul că acest pachet oferă (deși ele're, de obicei, la fel).

Comentarii (0)

Dacă metodele de mai sus nu funcționează, este în valoare de încercarea de a urma în python:

import modulename

modulename.version
modulename.version_info

Vezi https://stackoverflow.com/questions/31146153/get-python-tornado-version/31146188

Rețineți,.versiune a lucrat pentru mine la câteva altele în afară de tornadă la fel de bine.

Comentarii (0)

adăugați mai întâi python, pip la variabilele de mediu. astfel încât să puteți executa comenzi din command prompt. apoi, pur și simplu dau python comandă. apoi importați pachet

--> import de scrapy`

apoi imprimați versiunea numele

-->print(scrapy.__versiune__)

Acesta va lucra cu siguranta

Comentarii (2)

Presupunând că suntem folosind Jupyter Caiet (dacă se utilizează Terminal, aruncă semne de exclamare):

  1. în cazul în care pachetul (de exemplu, xgboost) a fost instalat cu pip:
!pip show xgboost
!pip freeze | grep xgboost
!pip list | grep xgboost
  1. în cazul în care pachetul (de exemplu, caffe) a fost instalat cu conda:
!conda list caffe
Comentarii (0)

Unele module nu't au __versiune__ atribut, deci, cel mai simplu mod este de a verifica în terminal: pip lista

Comentarii (0)

(a se vedea, de asemenea, https://stackoverflow.com/a/56912280/7262247)

Am găsit-o destul de nesigure de a folosi diverse instrumente disponibile (inclusiv cel mai bun `pkg_resources menționat de Jakub Kukul' răspunde), ca cele mai multe dintre ele nu acoperă toate cazurile. De exemplu

  • built-in module
  • module nu este instalat, dar doar adăugate la calea python (de IDE, de exemplu)
  • două versiuni ale aceluiași module disponibile (unul în python calea aferentă unul instalat)

Când am nevoie de o modalitate de încredere pentru a obține versiunea de orice ** pachet, modul sau submodul, am terminat de scris getversion. Este destul de simplu de utilizat:

from getversion import get_module_version
import foo
version, details = get_module_version(foo)

Vezi documentația pentru detalii.

Comentarii (0)

Acest lucru funcționează în Jupyter Notebook-ul pe Windows, de asemenea! Atâta timp cât Jupyter este lansat la o petrecere-compatibil linie de comandă, cum ar fi Git Bash (MingW64), soluțiile date în multe dintre răspunsurile pot fi utilizate în Jupyter Notebook pe sistemele de operare Windows cu un mic tweak.

Am'm care rulează windows 10 Pro cu Python instalat prin intermediul Anaconda, și următoarele cod funcționează atunci când am lansa Jupyter prin Git Bash (dar nu la lansare de la Anaconda prompt).

Tweak: Adăugați un semn de exclamare (!) în fața pip să face !pip.

>>>!pip show lxml | grep Version
Version: 4.1.0

>>>!pip freeze | grep lxml
lxml==4.1.0

>>>!pip list | grep lxml
lxml                               4.1.0                  

>>>!pip show lxml
Name: lxml
Version: 4.1.0
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
Home-page: http://lxml.de/
Author: lxml dev team
Author-email: lxml-dev@lxml.de
License: BSD
Location: c:\users\karls\anaconda2\lib\site-packages
Requires: 
Required-by: jupyter-contrib-nbextensions
Comentarii (0)

Pentru a obține o listă de non-standard (pip) module importate în modulul curent:

[{pkg.key : pkg.version} for pkg in pip.get_installed_distributions() 
   if pkg.key in set(sys.modules) & set(globals())]

Rezultatul:

>>> import sys, pip, nltk, bs4
>>> [{pkg.key : pkg.version} for pkg in pip.get_installed_distributions() if pkg.key in set(sys.modules) & set(globals())]
[{'pip': '9.0.1'}, {'nltk': '3.2.1'}, {'bs4': '0.0.1'}]

Notă:

Acest cod a fost pus împreună de soluții atât pe această pagină și de la https://stackoverflow.com/questions/4858100/how-to-list-imported-modules

Comentarii (0)

Rapid program in python pentru a lista toate packges (puteți să-l copiați pentru a requirements.txt)

from pip._internal.utils.misc import get_installed_distributions
print_log = ''
for module in sorted(get_installed_distributions(), key=lambda x: x.key): 
    print_log +=  module.key + '~=' + module.version  + '\n'
print(print_log)

Rezultatul ar arata asa:

asn1crypto~=0.24.0
attrs~=18.2.0
automat~=0.7.0
beautifulsoup4~=4.7.1
botocore~=1.12.98
Comentarii (0)

În Python versiunea 3.8 există o nou metadate modul în importlib pachet, care poate face asta la fel de bine.

Aici este un exemplu de documente:

>>> from importlib.metadata import version
>>> version('requests')
'2.22.0'
Comentarii (0)

Clădirea de pe Jakub Kukul's a răspunde am găsit o cale mai bună de a rezolva această problemă.

Principala problemă a acestei abordări este că necesită pachetele să fie instalat "convențional" (și care nu include utilizarea pip instala --user), sau să fie în sistemul CALEA de la Python inițializare.

Pentru a obține în jurul valorii de care te poti folosi pkg_resources.find_distributions(path_to_search). Acest fapt căutări pentru distribuții care ar fi import dacăpath_to_search` a fost în sistemul CALEA.

Putem itera prin acest generator ca acest lucru:

avail_modules = {}
distros = pkg_resources.find_distributions(path_to_search)
for d in distros:
    avail_modules[d.key] = d.version

Acest lucru va reveni un dicționar având module cu chei si versiunea lor ca valoare. Această abordare poate fi extins la mult mai mult decât numărul de versiune.

Datorită Jakub Kukul pentru îndreptat în direcția corectă

Comentarii (0)