platform - Informazioni sulla Versione del Sistema
Scopo: Esplora l'hardware della piattaforma sottostante, il sistema operativo, ottiene informazioni sulla versione dell'interprete
Python non viene spesso usato come un linguaggio multipiattaforma, ma occasionalmente è necessario sapere su quale sorta di sistema un programma è in esecuzione. Strumenti di assemblaggio hanno bisogno di questa informazione, ma una applicazione potrebbe anche sapere se alcune delle librerie o comandi esterni che usa abbiano diverse interfacce in base al sistema operativo in cui risiedono. Ad esempio uno strumento per gestire la configurazione di rete di un sistema operativo potrebbe definire una rappresentazione portabile delle interfacce di rete, alias, indirizzi IP ecc. Ma quando occorre modificare file di configurazione, occorre saperne di più circa il sistema operativo ospitante in modo che possa usare i corretti comandi e file di configurazione del sistema operativo. Il modulo platform include gli strumenti per ottenere informazioni circa l'interprete, il sistema operativo e la piattaforma hardware sulla quale è in esecuzione un programma.
Interprete
Ci sono quattro funzioni per ottenere informazioni circa l'interprete corrente Python: python_version() e python_version_tuple() ritornano diversi formati della versione dell'interprete con le componenti maggiore, minore e livello di patch. python_compiler() riporta informazioni sul compilatore usato per assemblare l'interprete e python_build() fornisce una versione stringa dell'assemblaggio dell'interprete.
# platform_python.py
import platform
print('Versione :', platform.python_version())
print('Versione (tuple):', platform.python_version_tuple())
print('Compilatore :', platform.python_compiler())
print('Assemblaggio :', platform.python_build())
Linux:
$ python3 platform_python.py
Versione : 3.8.5
Versione (tuple): ('3', '8', '5')
Compilatore : GCC 9.3.0
Assemblaggio : ('default', 'Jan 27 2021 15:41:15')
Windows:
$ python3 platform_python.py
Versione : 3.7.2rc1
Versione (tuple): ('3', '7', '2rc1')
Compilatore : MSC v.1916 64 bit (AMD64)
Assemblaggio : ('tags/v3.7.2rc1:75a402a217', 'Dec 11 2018 23:05:39')
Platform (Piattaforma)
La funzione platform() ritorna una stringa che contiene un identificatore per usi generici. La funzione accetta due argomenti booleani opzionali. Se aliased è True, i nomi nel valore di ritorno sono convertiti da un nome formale alla loro accezione più comune. Quanto terse è True, viene ritornato un valore minimale con alcune parti omesse invece della stringa completa.
# platform_platform.py
import platform
print('Normale:', platform.platform())
print('Aliased:', platform.platform(aliased=True))
print('Terse :', platform.platform(terse=True))
Linux:
$ python3 platform_platform.py Normale: Linux-5.4.0-73-generic-x86_64-with-glibc2.29 Aliased: Linux-5.4.0-73-generic-x86_64-with-glibc2.29 Terse : Linux-5.4.0-73-generic-x86_64-with-glibc2.29
Windows:
$ python3 platform_platform.py Normale: Windows-10-10.0.17134-SP0 Aliased: Windows-10-10.0.17134-SP0 Terse : Windows-10
Informazioni sul Sistema Operativo e Hardware
E' possibile recuperare anche le informazioni e più dettagliate sul sistema operativo e sull'harwdare sul quale è in esecuzione l'interprete. uname() ritorna una
| FUNZIONE | VALORE RITORNATO |
|---|---|
system() |
nome del sistema operativo |
node() |
nome host del server, non qualificato interamente |
release() |
numero di rilascio del sistema operativo |
version() |
ulteriori dettagli sulla versione del sistema |
machine() |
identificatore del tipo di hardware, ad esempio i386 |
processor() |
identificatore reale per il processore (lo stesso valore di machine nella maggior parte dei casi) |
# platform_os_info.py
import platform
print('uname:', platform.uname())
print()
print('systema :', platform.system())
print('nodo :', platform.node())
print('rilascio :', platform.release())
print('versione :', platform.version())
print('macchina :', platform.machine())
print('processore:', platform.processor())
Linux:
$ python3 platform_os_info.py uname: uname_result(system='Linux', node='robby-System-Product-Name', release='5.4.0-73-generic', version='#82-Ubuntu SMP Wed Apr 14 17:39:42 UTC 2021', machine='x86_64', processor='x86_64') systema : Linux nodo : robby-System-Product-Name rilascio : 5.4.0-73-generic versione : #82-Ubuntu SMP Wed Apr 14 17:39:42 UTC 2021 macchina : x86_64 processore: x86_64
Windows:
$ python3 platform_os_info.py uname: uname_result(system='Windows', node='LAPTOP-QUA2RDV8', release='10', version='10.0.17134', machine='AMD64', processor='Intel64 Family 6 Model 142 Stepping 10, GenuineIntel') systema : Windows nodo : LAPTOP-QUA2RDV8 rilascio : 10 versione : 10.0.17134 macchina : AMD64 processore: Intel64 Family 6 Model 142 Stepping 10, GenuineIntel
Architettura dell'Eseguibile
Le informazioni sui singoli programmi possono essere rilevate usando la funzione architecture(). Il primo argomento è il percorso di un programma eseguibile (predefinito sys.executable, l'interprete Python). Il valore di ritorno è una tupla che contiene il bit di architettura e il formato di link usato.
# platform_architecture.py
import platform
print('interprete :', platform.architecture())
print('/bin/ls :', platform.architecture('/bin/ls'))
Linux:
$ python3 platform_architecture.py
interprete : ('64bit', 'ELF')
/bin/ls : ('64bit', 'ELF')
Windows:
$ python3 platform_architecture.py
interprete : ('64bit', 'WindowsPE')
/bin/ls : ('64bit', '')
Vedere anche:
- platform
- La documentazione della libreria standard per questo modulo
- Note di portabilità per platform