Tout d'abord, ouvrez cmd et tapez
$ python
Ensuite, tapez les deux lignes suivantes
>>> import platform
>>> platform.architecture()
Tapez dans la console Linux :
- Si vous souhaitez vérifier si une application a une architecture 64 bits ou 32 bits en utilisant sa commande d'exécution :
type -p <command_to_run_application> | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
- Si vous souhaitez vérifier si une application a une architecture 64 bits ou 32 bits en utilisant le chemin d'accès complet à l'application :
file -b <full_path_to_an_application> | sed 's/, /\n/g' | sed -n 2p
Par exemple, pour Python 3, les commandes correspondantes peuvent être :
type -p python3 | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
file -b /usr/bin/python3.5 | sed 's/, /\n/g' | sed -n 2p
Sortie possible :
x86-64
ou
Intel 80386
ou
ARM
ou autre.
Si la sortie est "Intel 80386", l'application a une architecture 32 bits.
Si la sortie est "x86-64", l'application a une architecture 64 bits.
import platform
platform.architecture()[0]
#'32bit'
Pour Python 2.6 et supérieur, vous pouvez utiliser sys.maxsize
comme documenté ici :
import sys
is_64bits = sys.maxsize > 2**32
MISE À JOUR :Je remarque que je n'ai pas vraiment répondu à la question posée. Bien que le test ci-dessus vous indique avec précision si l'interpréteur s'exécute dans une architecture 32 bits ou 64 bits, il ne répond pas et ne peut pas répondre à la question de savoir quel est l'ensemble complet d'architectures pour lesquelles cet interpréteur a été conçu. et pourrait s'exécuter. Comme indiqué dans la question, cela est important par exemple avec les exécutables universels Mac OS X où un fichier exécutable peut contenir du code pour plusieurs architectures. Une façon de répondre à cette question est d'utiliser le système d'exploitation file
commande. Sur la plupart des systèmes, il signalera les architectures prises en charge d'un fichier exécutable. Voici comment le faire en une seule ligne à partir d'une ligne de commande shell sur la plupart des systèmes :
file -L $(python -c 'import sys; print(sys.executable)')
En utilisant le système par défaut Python sur OS X 10.6, la sortie est :
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386): Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc
Sur un système Linux :
/usr/bin/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, stripped
BTW, voici un exemple de pourquoi platform
n'est pas fiable à cet effet. Toujours en utilisant le système Python sur OS X 10.6 :
$ 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