platform — System Version Information¶

Purpose: Probe the underlying platform’s hardware, operating system, and interpreter version information.

Although Python is often used as a cross-platform language, it is occasionally necessary to know what sort of system a program is running on. Build tools need that information, but an application might also know that some of the libraries or external commands it uses have different interfaces on different operating systems. For example, a tool to manage the network configuration of an operating system can define a portable representation of network interfaces, aliases, IP addresses, etc. But when the time comes to edit the configuration files, it must know more about the host so it can use the correct operating system configuration commands and files. The platform module includes the tools for learning about the interpreter, operating system, and hardware platform where a program is running.

Note The example output in this section was generated on three systems: a Mac mini running macOS 10.14, a Dell PC running Ubuntu Linux 14.04, and a VirtualBox VM running Windows 10. Python was installed on the OS X and Windows systems using the pre-compiled installers from python.org. The Linux system is running a version in a system package. Special thanks to Patrick Kettner (@patrickkettner) for helping to collect the example output on Windows.

Interpreter¶ There are four functions for getting information about the current Python interpreter. python_version() and python_version_tuple() return different forms of the interpreter version with major, minor, and patch level components. python_compiler() reports on the compiler used to build the interpreter. And python_build() gives a version string for the build of the interpreter. platform_python.py ¶ import platform print ( 'Version :' , platform . python_version ()) print ( 'Version tuple:' , platform . python_version_tuple ()) print ( 'Compiler :' , platform . python_compiler ()) print ( 'Build :' , platform . python_build ()) OS X: $ python3 platform_python.py Version : 3.7.1 Version tuple: ('3', '7', '1') Compiler : Clang 6.0 (clang-600.0.57) Build : ('v3.7.1:260ec2c36a', 'Oct 20 2018 03:13:28') Linux: $ python3 platform_python.py Version : 3.5.2 Version tuple: ('3', '5', '2') Compiler : GCC 4.8.4 Build : ('default', 'Jul 17 2016 00:00:00') Windows: C:\>Desktop\platform_python.py Version : 3.5.1 Version tuple: ('3', '5', '1') Compiler : MSC v.1900 64 bit (AMD64) Build : ('v3.5.1:37a07cee5969', 'Dec 6 2015 01:54:25')

Platform¶ The platform() function returns a string containing a general purpose platform identifier. The function accepts two optional Boolean arguments. If aliased is True, the names in the return value are converted from a formal name to their more common form. When terse is true, a minimal value with some parts dropped is returned instead of the full string. platform_platform.py ¶ import platform print ( 'Normal :' , platform . platform ()) print ( 'Aliased:' , platform . platform ( aliased = True )) print ( 'Terse :' , platform . platform ( terse = True )) OS X: $ python3 platform_platform.py Normal : Darwin-18.0.0-x86_64-i386-64bit Aliased: Darwin-18.0.0-x86_64-i386-64bit Terse : Darwin-18.0.0 Linux: $ python3 platform_platform.py Normal : Linux-3.13.0-55-generic-x86_64-with-Ubuntu-14.04-trusty Aliased: Linux-3.13.0-55-generic-x86_64-with-Ubuntu-14.04-trusty Terse : Linux-3.13.0-55-generic-x86_64-with-glibc2.9 Windows: C:\>platform_platform.py Normal : Windows-10-10.0.10240-SP0 Aliased: Windows-10-10.0.10240-SP0 Terse : Windows-10

Operating System and Hardware Info¶ More detailed information about the operating system and hardware the interpreter is running under can be retrieved as well. uname() returns a tuple containing the system, node, release, version, machine, and processor values. Individual values can be accessed through functions of the same names, listed in the table below. Platform Information Functions ¶ Function Return Value system() operating system name node() host name of the server, not fully qualified release() operating system release number version() more detailed system version machine() a hardware-type identifier, such as 'i386' processor() a real identifier for the processor (the same value as machine() in many cases) platform_os_info.py ¶ import platform print ( 'uname:' , platform . uname ()) print () print ( 'system :' , platform . system ()) print ( 'node :' , platform . node ()) print ( 'release :' , platform . release ()) print ( 'version :' , platform . version ()) print ( 'machine :' , platform . machine ()) print ( 'processor:' , platform . processor ()) OS X: $ python3 platform_os_info.py uname: uname_result(system='Darwin', node='hubert.local', release='18.0.0', version='Darwin Kernel Version 18.0.0: Wed Aug 22 20:13:40 PDT 2018; root:xnu-4903.201.2~1/RELEASE_X86_64', machine='x86_64', processor='i386') system : Darwin node : hubert.local release : 18.0.0 version : Darwin Kernel Version 18.0.0: Wed Aug 22 20:13:40 PDT 2018; root:xnu-4903.201.2~1/RELEASE_X86_64 machine : x86_64 processor: i386 Linux: $ python3 platform_os_info.py uname: uname_result(system='Linux', node='apu', release='3.13.0-55-generic', version='#94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015', machine='x86_64', processor='x86_64') system : Linux node : apu release : 3.13.0-55-generic version : #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 machine : x86_64 processor: x86_64 Windows: C:\>Desktop\platform_os_info.py uname: uname_result(system='Windows', node='IE11WIN10', release='10', version='10.0.10240', machine='AMD64', processor='Intel64 Family 6 Model 70 Stepping 1, GenuineIntel') system : Windows node : IE11WIN10 release : 10 version : 10.0.10240 machine : AMD64 processor: Intel64 Family 6 Model 70 Stepping 1, GenuineIntel