PyMOTW: platform

12 Agosto 2008

Traducción de PyMOTW: platform el módulo platform de la columna semanal de Doug Hellmann.


Comentarios

Prueba la arquitectura de una plataforma e infórmate de versiones con el módulo platform.

Módulo: platform
Proposito: Acceder a información sobre las versiones del hardware, el sistema operativo y el intérprete.
Versión de Python 2.3 y posterior

Descripción:

A pesar de que Python es usado como un lenguaje multi-plataforma, ocasionalmente es necesario saber qué clase de sistema estás usando. Herramientas de compilación obviamente necesitan esta información, pero también sabrás que algunas librerías o comandos externos tienen distintas interfaces en distintos sistemas operativos. Por ejemplo, si estás escribiendo una herramienta que gestione la configuración de red de un sistema operativo, puedes tener una representación portable de las interfaces de red, aliases, direcciones IP, etc. Peto una vez que estés realmente editando los archivos de configuración, necesitas saber más acerca del sistema anfitrión y cómo está configurado. El módulo platform te da algunas herramientas para aprender acerca del intérprete, el sistema operativo y la plataforma de hardware que está ejecutando tu programa.

Ejemplos:

Los resultados de los ejemplos a continuación han sido generados en una MacBook Pro corriendo OS X 10.5.2, una VAIO corriendo Ubuntu Linux 7.10 y Windows Vista.

(El artículo original de Doug Hellmann muestra los resultados de los ejemplos ejecutados en la MacBook mencionada y una instancia de WMWare corriendo CentOS 4.6.)

Intérprete:

Existen cuatro funciones para obtener información sobre el intérprete actual de Python. python_version() y python_version_tuple() devuelven de forma distinta la versión del intérprete con componentes mayor (major), menor (minor) y parche (patchlevel). python_compiler() reporta el compilador usado para crear el intérprete. Y python_build() da una cadena con la versión de compilación del intérprete.

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:

$ python platform_python.py
Version      : 2.5.1
Version tuple: ['2', '5', '1']
Compiler     : GCC 4.0.1 (Apple Computer, Inc. build 5367)
Build        : ('r251:54869', 'Apr 18 2007 22:08:04')

Linux:

$ python platform_python.py 
Version      : 2.5.1
Version tuple: ['2', '5', '1']
Compiler     : GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
Build        : ('r251:54863', 'Jul 31 2008 23:17:40')

Windows Vista:

> python.exe platform_python.py
Version      : 2.5.2
Version tuple: ['2', '5', '2']
Compiler     : MSC v.1310 32 bit (Intel)
Build        : ('r252:60911', 'Feb 21 2008 13:11:45')

Plataforma:

Un identificador de propósito general está disponible a través de la función platform(). platform() acepta dos argumentos binarios opcionales. Si aliased es True, los nombres en el valor de retorno son convertidos de un nombre formal a su forma más común. Cuando terse es True, la función devuelve un valor mínimo con algunas partes recortadas.

import platform

print 'Normal :', platform.platform()
print 'Aliased:', platform.platform(aliased=True)
print 'Terse  :', platform.platform(terse=True)

OS X:

$ python platform_platform.py
Normal : Darwin-9.2.2-i386-32bit
Aliased: Darwin-9.2.2-i386-32bit
Terse  : Darwin-9.2.2

Linux:

$ python platform_platform.py 
Normal : Linux-2.6.22-15-generic-i686-with-debian-lenny-sid
Aliased: Linux-2.6.22-15-generic-i686-with-debian-lenny-sid
Terse  : Linux-2.6.22-15-generic-i686-with-glibc2.4

Windows Vista:

> python.exe platform_platform.py
Normal : Windows-Vista-6.0.6001
Aliased: Windows-Vista-6.0.6001
Terse  : Windows-Vista

Información sobre el sistema operativo y el hardware:

Información más detallada sobre el sistema operativo y el hardware en el que se está ejecutando el intérprete puede ser obtenida también. uname() devuelve una tupla que contiene valores del sistema (operativo), el nodo, el release, la versión, la máquina y el procesador. Se puede acceder a valores individuales a través de funciones con los mismos nombres:

system() devuelve el nombre del sistema operativo. node() devuelve el nombre del nodo, sin calificación completa. release() devuelve el número de release del sistema operativo. version() devuelve el número versión más detallada del sistema. machine() da un identificador del tipo de hardware como 'i386'. processor() devuelve un identificador real para el procesador, o el mismo valor que machine() en muchos casos.

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:

$ python platform_os_info.py
uname: ('Darwin', 'farnsworth.local', '9.2.2', 'Darwin Kernel Version 9.2.2: Tue Mar  4 21:17:34 PST 2008; root:xnu-1228.4.31~1/RELEASE_I386', 'i386', 'i386')

system   : Darwin
node     : farnsworth.local
release  : 9.2.2
version  : Darwin Kernel Version 9.2.2: Tue Mar  4 21:17:34 PST 2008; root:xnu-1228.4.31~1/RELEASE_I386
machine  : i386
processor: i386

Linux:

$ python platform_os_info.py 
uname: ('Linux', 'notizbuch', '2.6.22-15-generic', '#1 SMP Fri Jul 11 19:25:33 UTC 2008', 'i686', '')

system   : Linux
node     : notizbuch
release  : 2.6.22-15-generic
version  : #1 SMP Fri Jul 11 19:25:33 UTC 2008
machine  : i686
processor:

Windows Vista:

> python.exe platform_os_info.py
uname: ('Windows', 'Klapprechner', 'Vista', '6.0.6001', '', '')

system   : Windows
node     : Klapprechner
release  : Vista
version  : 6.0.6001
machine  :
processor:

Arquitectura ejecutable:

Información individual sobre la arquitectura de un programa se puede obtener usando la función architecture(). El primer argumento el la ruta de un programa ejecutable (por defecto es sys.executable, el intérprete de Python). El valor de retorno es una tupla que contiene la arquitectura de bits y el formato de linkage usado.

import platform

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

OS X:

$ python platform_architecture.py
interpreter: ('32bit', '')
/bin/ls    : ('32bit', '')

Linux:

$ python platform_architecture.py 
interpreter: ('32bit', '')
/bin/ls    : ('32bit', 'ELF')

Windows Vista:

> python.exe platform_architecture.py
interpreter: ('32bit', 'WindowsPE')
/bin/ls    : ('32bit', '')

Referencias:

Python Module of the Week Home Descarga el código

Copyright 2008 Doug Hellmann


blog comments powered by Disqus

Categorías