514 votes

Comment puis-je déterminer si mon interpréteur de commandes python s’exécute en mode 32 bits ou 64 bits sur OS X ?

J'ai besoin d'un moyen de dire à quel mode le shell est à l'intérieur de la coquille.

J'ai essayé de regarder la plate-forme de module, mais il ne semble qu'à vous dire au sujet de "a propos de l'architecture bits et le couplage avec le format utilisé pour l'exécutable": le binaire est compilé en 64 bits (je suis en cours d'exécution sur OS X 10.6) de sorte qu'il semble toujours le rapport de 64 bits, même si je suis en utilisant les méthodes décrites ici pour forcer le mode 32 bits).

480voto

Ned Deily Points 40248

Mise à JOUR: Une façon est de regarder sys.maxsize comme indiqué 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)

sys.maxsize a été introduit dans la version 2.6 de Python. Si vous avez besoin d'un test pour les systèmes plus anciens, c'est légèrement plus compliqué test devrait fonctionner sur tous Python 2 et 3 versions:

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

BTW, vous pourriez être tenté d'utiliser platform.architecture() pour cette. Malheureusement, ses résultats ne sont pas toujours fiables, en particulier dans le cas de mac OS X universal binaries.

$ 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

287voto

Dustin Points 501

Lors du démarrage de l’interpréteur Python dans la ligne de commande/administration, vous pouvez également voir une ligne comme :

``

Où [MSC v.1500 64 bits (AMD64)] signifie Python de 64 bits. Fonctionne pour ma configuration particulière, en tout cas.

222voto

ChristopheD Points 38217

Fondamentalement, une variante sur la réponse de Matthew Marshall (avec la structure de la std.library) :

91voto

Matthew Marshall Points 2521

Essayez d’utiliser ctypes pour obtenir la taille d’un pointeur void :

Ça va être 4 ou 8 pour 32 ou 64 bits respectivement.

18voto

Peter Hosey Points 66275

Pour une solution hors programme, regardez dans le moniteur d’activité. Il répertorie l’architecture des processus 64 bits comme « Intel (64-bit) ».

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X