web-dev-qa-db-fra.com

Comment détecter si Python s'exécute en tant qu'application 64 bits?

Duplicate possible:
Comment puis-je déterminer si mon shell python s'exécute en mode 32 bits ou 64 bits?

Je travaille avec le registre Windows. Selon que vous exécutez python en 32 bits ou 64 bits, la valeur de la clé sera différente. Comment détecter si Python est en cours d'exécution comme une application 64 bits par opposition à une application 32 bits?

Remarque: la détection de Windows 32 bits/64 bits ne m'intéresse pas - uniquement la plate-forme Python.

102
Nick Bolton
import platform
platform.architecture()

De la documentation Python :

Interroge l'exécutable donné (par défaut = Python)] pour obtenir diverses informations sur l'architecture.

Retourne un Tuple (bits, liaison) contenant des informations sur l'architecture des bits et le format de liaison utilisé pour l'exécutable. Les deux valeurs sont renvoyées sous forme de chaînes.

179
Cristian

Bien que cela puisse fonctionner sur certaines plateformes, sachez que platform.architecture n'est pas toujours un moyen fiable de déterminer si python s'exécute en 32 bits ou en 64 bits. En particulier, sur certaines versions multi-architectures OS X, le même fichier exécutable peut être Comme le montre l'exemple ci-dessous, la solution la plus rapide et la plus sûre consiste à tester sys.maxsize on Python 2.6, 2.7, Python 3.x.

$ 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)
57
Ned Deily