Primero, abra cmd y escriba
$ python
Luego, escribe las siguientes dos líneas
>>> import platform
>>> platform.architecture()
Escriba en la consola de Linux:
- En caso de que desee verificar si una aplicación tiene una arquitectura de 64 bits o de 32 bits usando su comando para ejecutar:
type -p <command_to_run_application> | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
- En caso de que desee verificar si una aplicación tiene una arquitectura de 64 bits o de 32 bits utilizando la ruta completa a la aplicación:
file -b <full_path_to_an_application> | sed 's/, /\n/g' | sed -n 2p
Por ejemplo, para Python 3 los comandos correspondientes pueden ser:
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
Salida posible:
x86-64
o
Intel 80386
o
ARM
u otro.
Si la salida es "Intel 80386", la aplicación tiene una arquitectura de 32 bits.
Si la salida es "x86-64", la aplicación tiene una arquitectura de 64 bits.
import platform
platform.architecture()[0]
#'32bit'
Para Python 2.6 y superior, puede usar sys.maxsize
como se documenta aquí:
import sys
is_64bits = sys.maxsize > 2**32
ACTUALIZACIÓN:Me doy cuenta de que realmente no respondí la pregunta planteada. Si bien la prueba anterior le dice con precisión si el intérprete se ejecuta en una arquitectura de 32 bits o de 64 bits, no responde ni puede responder a la pregunta de cuál es el conjunto completo de arquitecturas para las que se creó este intérprete. y podría ejecutarse. Como se señaló en la pregunta, esto es importante, por ejemplo, con los ejecutables universales de Mac OS X, donde un archivo ejecutable puede contener código para varias arquitecturas. Una forma de responder a esa pregunta es utilizar el sistema operativo file
dominio. En la mayoría de los sistemas, informará sobre las arquitecturas admitidas de un archivo ejecutable. Aquí se explica cómo hacerlo en una línea desde una línea de comando de shell en la mayoría de los sistemas:
file -L $(python -c 'import sys; print(sys.executable)')
Usando el sistema predeterminado Python en OS X 10.6, el resultado es:
/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
En un sistema 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
Por cierto, aquí hay un ejemplo de por qué platform
no es confiable para este propósito. Nuevamente usando el sistema Python en 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