How do I detect the Python version at runtime? [duplicate]
I have a Python file which might have to support Python versions < 3.x and >= 3.x. Is there a way to introspect the Python runtime to know the version which it is running (for example, 2.6 or 3.2.x
)?
Sure, take a look at sys.version
and sys.version_info
.
For example, to check that you are running Python 3.x, use
import sys
if sys.version_info[0] < 3:
raise Exception("Must be using Python 3")
Here, sys.version_info[0]
is the major version number. sys.version_info[1]
would give you the minor version number.
In Python 2.7 and later, the components of sys.version_info
can also be accessed by name, so the major version number is sys.version_info.major
.
See also How can I check for Python version in a program that uses new language features?
Try this code, this should work:
import platform
print(platform.python_version())
Per sys.hexversion and API and ABI Versioning:
import sys
if sys.hexversion >= 0x3000000:
print('Python 3.x hexversion %s is in use.' % hex(sys.hexversion))
Just in case you want to see all of the gory details in human readable form, you can use:
import platform;
print(platform.sys.version);
Output for my system:
3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0]
Something very detailed but machine parsable would be to get the version_info
object from platform.sys
, instead, and then use its properties to take a predetermined course of action. For example:
import platform;
print(platform.sys.version_info)
Output on my system:
sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0)