I'm trying to get the version number of a specific few modules that I use. Something that I can store in a variable.
6 Answers
For Python version < 3.8
Use pkg_resources (part of setuptools). Anything installed from PyPI at least has a version number. No extra package/module is needed.
import pkg_resources
pkg_resources.get_distribution("simplegist").version
# '0.3.2'
For Python versions >= 3.8
importlib.metadata can be used as a replacement for pkg_resources. No extra package/module is needed.
from importlib.metadata import version
version('json2html')
# '1.2.3'
1 Comment
importlib.metadata.version as outlined aboveStarting Python 3.8, importlib.metadata can be used as a replacement for pkg_resources to extract the version of third-party packages installed via tools such as pip:
from importlib.metadata import version
version('wheel')
# '0.33.4'
2 Comments
from importlib_metadata import version for me --- so underscore instead of dot.Generalized answer from Matt's, do a dir(YOURMODULE) and look for __version__, VERSION, or version. Most modules like __version__ but I think numpy uses version.version
4 Comments
__version__ is the preferred standard for new code, as recommended by PEP8. See Standard way to embed version into Python package?print(YOURMODULE.__version__)__version__, no?I think it depends on the module. For example, Django has a VERSION variable that you can get from django.VERSION, sqlalchemy has a __version__ variable that you can get from sqlalchemy.__version__.
3 Comments
django.get_version(), which returns a string rather than a tuple. When in doubt, dir(module).getmembers function from the inspect module.Some modules (e.g. azure) do not provide a __version__ string.
If the package was installed with pip, the following should work.
# say we want to look for the version of the "azure" module
import pip
for m in pip.get_installed_distributions():
if m.project_name == 'azure':
print(m.version)
2 Comments
AttributeError: module 'pip' has no attribute 'get_installed_distributions'. Same result in Jupyter 5.0.0 and VS Code 1.30.2 using pip version 18.1. Any suggestions? import sys
import matplotlib as plt
import pandas as pd
import sklearn as skl
import seaborn as sns
print(sys.version)
print(plt.__version__)
print(pd.__version__)
print(skl.__version__)
print(sns.__version__)
The above code shows versions of respective modules: Sample O/P:
3.7.1rc1 (v3.7.1rc1:2064bcf6ce, Sep 26 2018, 14:21:39) [MSC v.1914 32 bit (Intel)] 3.1.0 0.24.2 0.21.2 0.9.0 (sys shows version of python )