Innanzitutto, apri cmd e digita
$ python
Quindi, digita le seguenti due righe
>>> import platform
>>> platform.architecture()
Digita console Linux:
- Nel caso in cui desideri verificare se un'applicazione ha un'architettura a 64 o 32 bit utilizzando il suo comando per l'esecuzione:
type -p <command_to_run_application> | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
- Nel caso in cui desideri verificare se un'applicazione ha un'architettura a 64 o 32 bit utilizzando il percorso completo dell'applicazione:
file -b <full_path_to_an_application> | sed 's/, /\n/g' | sed -n 2p
Ad esempio, per Python 3 i comandi corrispondenti possono essere:
type -p python3 | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
file -b /usr/bin/python3.5 | sed 's/, /\n/g' | sed -n 2p
Possibile output:
x86-64
o
Intel 80386
o
ARM
o altro.
Se l'output è "Intel 80386", allora l'applicazione ha un'architettura a 32 bit.
Se l'output è "x86-64", l'applicazione ha un'architettura a 64 bit.
import platform
platform.architecture()[0]
#'32bit'
Per Python 2.6 e versioni successive, puoi usare sys.maxsize
come documentato qui:
import sys
is_64bits = sys.maxsize > 2**32
AGGIORNAMENTO:noto che non ho davvero risposto alla domanda posta. Sebbene il test precedente ti dica con precisione se l'interprete è in esecuzione in un'architettura a 32 o 64 bit, non risponde e non può rispondere alla domanda su quale sia l'insieme completo di architetture per cui è stato creato questo interprete e potrebbe essere eseguito. Come è stato notato nella domanda, questo è importante, ad esempio, con gli eseguibili universali di Mac OS X in cui un file eseguibile può contenere codice per più architetture. Un modo per rispondere a questa domanda è usare il sistema operativo file
comando. Sulla maggior parte dei sistemi riporterà le architetture supportate di un file eseguibile. Ecco come farlo in una riga da una riga di comando della shell sulla maggior parte dei sistemi:
file -L $(python -c 'import sys; print(sys.executable)')
Utilizzando il sistema predefinito Python su OS X 10.6, l'output è:
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386): Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc
Su un sistema Linux:
/usr/bin/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, stripped
A proposito, ecco un esempio del perché platform
non è affidabile per questo scopo. Ancora usando il sistema Python su OS X 10.6:
$ arch -x86_64 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit True
$ arch -i386 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit False