web-dev-qa-db-fra.com

Quelle commande utiliser pour vérifier si python est 64 bits ou 32 bits

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).

26
Mirage

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
45
Ned Deily
import platform
platform.architecture()[0]
#'32bit'
7
Bentley4

Tout d'abord, ouvrez cmd et tapez

$ python

Tapez ensuite les deux lignes suivantes

>>> import platform

>>> platform.architecture()
3
Kamal El-Saaid

Tapez dans la console Linux:

  1. 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
  1. 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.

0