platform — Información de versión del sistema

Propósito:Analiza el hardware de la plataforma subyacente, el sistema operativo y la información de versión del intérprete.

Aunque Python se usa a menudo como un lenguaje multiplataforma, ocasionalmente es necesario saber en qué tipo de sistema se está ejecutando un programa. Las herramientas de compilación necesitan esa información, pero una aplicación también puede saber que algunas de las bibliotecas o comandos externos que usa tienen diferentes interfaces en diferentes sistemas operativos. Por ejemplo, una herramienta para administrar la configuración de red de un sistema operativo puede definir una representación portátil de interfaces de red, alias, direcciones IP, etc. Pero cuando llega el momento de editar los archivos de configuración, debe saber más sobre el host para que pueda puede usar los comandos y archivos de configuración correctos del sistema operativo. El módulo platform incluye las herramientas para aprender sobre el intérprete, el sistema operativo y la plataforma de hardware donde se ejecuta un programa.

Nota

El resultado de ejemplo en esta sección se generó en tres sistemas: una Mac mini con OS X 10.11.6, una PC Dell con Ubuntu Linux 14.04 y una VM VirtualBox con Windows 10. Se instaló Python en los sistemas OS X y Windows utilizando instaladores precompilados de python.org. El sistema Linux está ejecutando una versión en un paquete del sistema.

Un agradecimiento especial a Patrick Kettner (@patrickkettner) por ayudar a recopilar la salida de ejemplo en Windows.

Intérprete

Hay cuatro funciones para obtener información sobre el intérprete actual de Python. python_version() y python_version_tuple() devuelven diferentes formas de la versión del intérprete con componentes principales, secundarios y de nivel de parche. python_compiler() informa sobre el compilador utilizado para construir el intérprete. Y python_build() proporciona una cadena de versión para la compilación del intérprete.

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.6.4
Version tuple: ('3', '6', '4')
Compiler     : GCC 4.2.1 (Apple Inc. build 5666) (dot 3)
Build        : ('v3.6.4:d48ecebad5', 'Dec 18 2017 21:07: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')

Platforma

La función platform() devuelve una cadena que contiene un identificador de plataforma de propósito general. La función acepta dos argumentos booleanos opcionales. Si alias es Verdadero, los nombres en el valor de retorno se convierten de un nombre formal a su forma más común. Cuando terse es verdadero, se devuelve un valor mínimo con algunas partes descartadas en lugar de la cadena completa.

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-17.4.0-x86_64-i386-64bit
Aliased: Darwin-17.4.0-x86_64-i386-64bit
Terse  : Darwin-17.4.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

Información del sistema operativo y del hardware

También se puede obtener información más detallada sobre el sistema operativo y el hardware con el que se ejecuta el intérprete. uname() devuelve una tupla que contiene los valores del sistema, nodo, versión, versión, máquina y procesador. Se puede acceder a los valores individuales a través de las funciones de los mismos nombres, que se enumeran en the table below.

Funciones de información de plataforma
Función Valor de retorno
system() nombre del sistema operativo
node() nombre de host del servidor, no calificado
release() versión del sistema operativo
version() información del sistema más detallada
machine() un identificador del timpo de hardware, como 'i386'
processor() un identificador real del procesador (el mismo valor que machine() en muchos casos)
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='17.4.0', version='Darwin Kernel Version 17.4.0: Sun Dec
17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64',
machine='x86_64', processor='i386')

system   : Darwin
node     : hubert.local
release  : 17.4.0
version  : Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST
2017; root:xnu-4570.41.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

Arquitectura ejecutable

La información de la arquitectura del programa individual se puede probar utilizando la función architecture(). El primer argumento es la ruta a un programa ejecutable (predeterminado a sys.executable, el intérprete de Python). El valor de retorno es una tupla que contiene la arquitectura de bits y el formato de enlace utilizado.

platform_architecture.py
import platform

print('interpreter:', platform.architecture())
print('/bin/ls    :', platform.architecture('/bin/ls'))

OS X:

$ python3 platform_architecture.py

interpreter: ('64bit', '')
/bin/ls    : ('64bit', '')

Linux:

$ python3 platform_architecture.py

interpreter: ('64bit', 'ELF')
/bin/ls    : ('64bit', 'ELF')

Windows:

C:\>Desktop\platform_architecture.py

interpreter: ('64bit', 'WindowsPE')
/bin/ls    : ('64bit', '')