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).

4voto

betontalpfa Punkte 2896
import sys
print(sys.version)

3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 Bit (AMD64) ]

4voto

Nikhil Punkte 300
C:\Users\xyz>python

Python 2.7.6 (default, Nov XY ..., 19:24:24) **[MSC v.1500 64 bit (AMD64)] on win
32**
Type "help", "copyright", "credits" or "license" for more information.
>>>

nachdem ich in cmd auf python geklickt habe

0voto

kxr Punkte 3782

platform.architecture() ist problematisch (und teuer).

Bequemer Test für sys.maxsize > 2**32 seit Py2.6 .

Dies ist ein zuverlässiger Test für die tatsächliche (Standard-) Zeigergröße und mindestens seit Py2.3 kompatibel: struct.calcsize('P') == 8 . Auch: ctypes.sizeof(ctypes.c_void_p) == 8 .

Anmerkungen: Es können Builds mit der Option gcc erstellt werden -mx32 oder so, die Anwendungen mit 64-Bit-Architektur sind, aber standardmäßig 32-Bit-Zeiger verwenden (um Speicher und Geschwindigkeit zu sparen). sys.maxsize = ssize_t' repräsentiert nicht unbedingt die Größe des C-Zeigers (es ist normalerweise 2**31 - 1 sowieso). Und es gab/gibt Systeme, die unterschiedliche Zeigergrößen für Code und Daten haben und es muss geklärt werden, was genau der Zweck der Unterscheidung "32bit oder 64bit Modus" ist.

0voto

Prakhar Agarwal Punkte 2450

Die Plattformarchitektur ist nicht der zuverlässige Weg. Stattdessen wir:

$ arch -i386 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 2147483647)
>>> ^D
$ arch -x86_64 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 9223372036854775807)

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