Öffnen Sie zuerst cmd und geben Sie
ein$ python
Geben Sie dann die folgenden beiden Zeilen ein
>>> import platform
>>> platform.architecture()
Geben Sie die Linux-Konsole ein:
- Wenn Sie überprüfen möchten, ob eine Anwendung eine 64-Bit- oder 32-Bit-Architektur hat, verwenden Sie den Befehl zum Ausführen:
type -p <command_to_run_application> | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
- Wenn Sie überprüfen möchten, ob eine Anwendung eine 64-Bit- oder 32-Bit-Architektur hat, verwenden Sie den vollständigen Pfad zur Anwendung:
file -b <full_path_to_an_application> | sed 's/, /\n/g' | sed -n 2p
Beispielsweise können für Python 3 entsprechende Befehle sein:
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
Mögliche Ausgabe:
x86-64
oder
Intel 80386
oder
ARM
oder andere.
Wenn die Ausgabe "Intel 80386" ist, dann hat die Anwendung eine 32-Bit-Architektur.
Wenn die Ausgabe "x86-64" ist, dann hat die Anwendung eine 64-Bit-Architektur.
import platform
platform.architecture()[0]
#'32bit'
Für Python 2.6 und höher können Sie sys.maxsize
verwenden wie hier dokumentiert:
import sys
is_64bits = sys.maxsize > 2**32
UPDATE:Ich merke, dass ich die gestellte Frage nicht wirklich beantwortet habe. Während der obige Test Ihnen genau sagt, ob der Interpreter in einer 32-Bit- oder einer 64-Bit-Architektur läuft, beantwortet er nicht und kann nicht die Frage beantworten, für was der vollständige Satz von Architekturen ist, für den dieser Interpreter gebaut wurde und könnte einlaufen. Wie in der Frage erwähnt, ist dies beispielsweise bei universellen ausführbaren Dateien von Mac OS X wichtig, bei denen eine ausführbare Datei Code für mehrere Architekturen enthalten kann. Eine Möglichkeit, diese Frage zu beantworten, ist die Verwendung des Betriebssystems file
Befehl. Auf den meisten Systemen werden die unterstützten Architekturen einer ausführbaren Datei gemeldet. So machen Sie es auf den meisten Systemen in einer Zeile von einer Shell-Befehlszeile aus:
file -L $(python -c 'import sys; print(sys.executable)')
Unter Verwendung des Standardsystems Python unter OS X 10.6 lautet die Ausgabe:
/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
Auf einem Linux-System:
/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
Übrigens, hier ist ein Beispiel dafür, warum platform
ist für diesen Zweck nicht zuverlässig. Wieder mit dem System Python auf 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