How to check version of python modules?
I suggest using pip in place of easy_install. With pip, you can list all installed packages and their versions with
In most linux systems, you can pipe this to
findstr on Windows) to find the row for the particular package you're interested in:
Linux:$ pip freeze | grep lxmllxml==2.3Windows:c:\> pip freeze | findstr lxmllxml==2.3
For an individual module, you can try the
__version__ attribute, however there are modules without it:
$ python -c "import requests; print(requests.__version__)"2.14.2$ python -c "import lxml; print(lxml.__version__)"Traceback (most recent call last): File "<string>", line 1, in <module>AttributeError: 'module' object has no attribute '__version__'
Lastly, as the commands in your question are prefixed with
sudo, it appears you're installing to the global python environment. Strongly advise to take look into python virtual environment managers, for example virtualenvwrapper
You can try
import statlibprint statlib.__version__import constructprint contruct.__version__
Update: This is the approach recommended by PEP 396. But that PEP was never accepted and has been deferred. In fact, there appears to be increasing support amongst Python core developers to recommend not including a
__version__ attribute, e.g. in https://gitlab.com/python-devs/importlib_metadata/-/merge_requests/125.
Python >= 3.8:
If you're on python
>=3.8 you can use a module from the built-in library for that. To check a package's version (in this example
from importlib.metadata import version version('construct')'4.3.1'
Python < 3.8:
import pkg_resources pkg_resources.get_distribution('construct').version'2.5.2'
Note that the string that you pass to the
get_distributionmethod should be the package name as registered in PyPI, not the module name that you are trying to import. Unfortunately, these aren't always the same (e.g. you do
pip install memcached, but
If you want to apply this solution from the command line you can do somthing like:
python -c \ "import pkg_resources; print(pkg_resources.get_distribution('construct').version)"