540 Stimmen

Wie kann ich feststellen, ob meine Python-Shell in 32bit oder 64bit ausgeführt wird?

Ich benötige eine Möglichkeit, aus der Shell heraus zu erkennen, in welchem Modus sich die Shell befindet.

Ich bin zwar in erster Linie ein OS X-Benutzer, aber ich wäre auch an Informationen über andere Plattformen interessiert.

Ich habe versucht, mir die Plattform Modul, aber es scheint nur über "über die Bit-Architektur und das Verknüpfungsformat, das für die ausführbare Datei verwendet wird" zu informieren: die Binärdatei wird jedoch als 64bit kompiliert (ich verwende OS X 10.6), also scheint es immer 64bit zu melden, obwohl ich die Methoden hier beschrieben um den 32bit-Modus zu erzwingen).

501voto

Ned Deily Punkte 81039

Eine Möglichkeit ist die Betrachtung von sys.maxsize wie dokumentiert ici :

$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

Führen Sie unter Windows die gleichen Befehle in folgendem Format aus:

python -c "import sys;print(\"%x\" % sys.maxsize, sys.maxsize > 2**32)"

sys.maxsize wurde in Python 2.6 eingeführt. Wenn Sie einen Test für ältere Systeme benötigen, sollte dieser etwas kompliziertere Test auf allen Python 2 und 3 Versionen funktionieren:

$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64

Übrigens, Sie könnten versucht sein, die platform.architecture() für diese. Leider sind die Ergebnisse nicht immer zuverlässig, insbesondere im Fall von OS X Universal Binarys .

$ 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

301voto

Dustin Punkte 2883

Wenn Sie den Python-Interpreter im Terminal/auf der Kommandozeile starten, können Sie auch eine Zeile wie diese sehen:

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32

[MSC v.1500 64 bit (AMD64)] bedeutet 64-Bit-Python. Funktioniert für mein spezielles Setup.

232voto

ChristopheD Punkte 106139

Im Grunde eine Variante der Antwort von Matthew Marshall (mit struct aus der std.library):

import struct
print struct.calcsize("P") * 8

102voto

Matthew Marshall Punkte 5563

Versuchen Sie, mit ctypes die Größe eines void-Zeigers zu ermitteln:

import ctypes
print ctypes.sizeof(ctypes.c_voidp)

Es werden 4 für 32 Bit oder 8 für 64 Bit sein.

90voto

abe312 Punkte 4455

Öffnen Sie die Python-Konsole:

import platform
platform.architecture()[0]

sollte je nach Ihrer Plattform '64bit' oder '32bit' angezeigt werden.

Alternativ dazu ( im Falle von OS X-Binärdateien ):

import sys
sys.maxsize > 2**32 
# it should display True in case of 64bit and False in case of 32bit

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X