Je ne trouve aucune commande pour vérifier si mon python est compilé pour un système 32 bits ou un système 64 bits.
J'ai essayé
python
et il ne dit que la version
Aussi quand je vais sur python site de téléchargement, ils ont une version de python pour linux mais deux versions pour mac c'est-à-dire 32 bits et 64 bits).
Pour Python 2.6 et supérieur, vous pouvez utiliser sys.maxsize
tel que 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 pour quel ensemble complet d'architectures 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 consiste à utiliser la commande file
du système d'exploitation. Sur la plupart des systèmes, il signalera les architectures prises en charge d'un fichier exécutable. Voici comment le faire sur 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 sous 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. Encore une fois 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
import platform
platform.architecture()[0]
#'32bit'
Tout d'abord, ouvrez cmd et tapez
$ python
Tapez ensuite les deux lignes suivantes
>>> import platform
>>> platform.architecture()
Tapez dans la console Linux:
- Dans le cas où vous souhaitez vérifier si une application a une architecture 64 bits ou 32 bits en utilisant sa commande pour l'exécution:
type -p <command_to_run_application> | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
- Dans le cas où 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 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.