128 votes

Comment détecter si Python est exécuté en tant qu'application 64 bits?

Double Possible:
Comment puis-je déterminer si mon python shell en cours d'exécution dans 32bit ou 64bit mode?

Je suis en train de faire un certain travail avec le registre de windows. Selon que vous êtes en cours d'exécution python 32 bits ou 64 bits, la valeur de la clé sera différent. Comment puis-je détecter si Python est en cours d'exécution comme une application 64 bits, par opposition à une application 32 bits?

Note: je ne suis pas intéressé à la détection de 32-bit/64-bit Windows - le Python plate-forme.

227voto

Cristian Points 10133
 import platform
platform.architecture()
 

À partir de la documentation Python :

Interroge l'exécutable donné (par défaut au binaire de l’interprète Python) pour diverses informations d'architecture.

Retourne un tuple (bits, lien) qui contenir des informations sur le bit architecture et format de liaison utilisé pour l'exécutable. Les deux valeurs sont retournés sous forme de chaînes.

70voto

Ned Deily Points 40248

Alors que cela peut fonctionner sur certaines plates-formes, sachez qu' platform.architecture n'est pas toujours un moyen fiable de déterminer si python est en cours d'exécution en 32-bit ou 64-bits. En particulier, sur OS X multi-architecture construit comme la Pomme-valeur par défaut fourni avec OS X 10.6, le même fichier exécutable peut être capable de fonctionner en mode, comme dans l'exemple ci-dessous illustre. La plus sûre de la plate-forme multi-approche consiste à tester l' sys.maxint sur Python 2.x ou sys.maxsize sur Python 3.x.

$ /usr/bin/python
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxint
(('64bit', ''), 9223372036854775807)
>>> ^D
$ export VERSIONER_PYTHON_PREFER_32_BIT=yes
$ /usr/bin/python
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxint
(('64bit', ''), 2147483647)

4voto

ccheneson Points 24031

Vous pouvez essayer platform.architecture

0voto

Neil Santos Points 149

Par curiosité ... N’est-il pas possible de supposer que vous êtes sur 32 bits, encapsulé dans try..except qui essaierait alors d’utiliser la clé 64 bits en cas d’échec? C'est comme ça que je le ferais probablement.

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