2012-04-01 9 views
8

Duplicar posible:
How do I determine if my python shell is executing in 32bit or 64bit mode?Python: compruebe si un sistema tiene 32 o 64 bits para determinar si ejecuta la función o no.

me hizo una pregunta anterior que nunca nos respondió a, pero tengo algo más específico ahora, así que espero que pueda ayudar.

Básicamente la biblioteca SendKeys sólo aparece para instalar en mi sistema de 32 bits de Windows ...

así que me preguntaba si hay una manera de hacer que lo que esta función Voy a escribir sólo se ejecutará en un sistema de 32 bits? Me doy cuenta de que hay un método platform.architecture() para verificar el sistema actual, pero devuelve la cadena "('64bit', 'WindowsPE')".

Me preguntaba si había una forma de leer la parte de 64 bits de esta cadena para hacer que esta función funcione correctamente.

Por ejemplo, la pseudo código:

checker = platform.architecture() 
system = strip or read 64 bit from checker string somehow 
if system == 64 bit 
then warn system is 64 bit and won't run function 
else run function 

lo largo de la línea de esa. A menos que haya una forma más sencilla de verificarlo, tal vez contra la versión de Python utilizada (es decir, 32 o 64 bits)

Espero haber comprendido esto correctamente: sigo siendo bastante nuevo en la programación. :)

+3

Duplicado de http://stackoverflow.com/questions/1405913/how-do-i-determine-if-my-python-shell-is-executing-in-32bit-or-64bit-mode y http://stackoverflow.com/questions/1842544/how-do-i-detect-if-python-is-running-as-a-64-bit-application y http://stackoverflow.com/questions/2208828/detect-64bit -os-windows-in-python que es probablemente el duplicado más exacto. – agf

+0

Sí, lo siento acaba de darse cuenta de esto. La respuesta a continuación parece la forma más simple de lejos! – Semaj

Respuesta

16

Siguiendo this documentation, prueba este código:

is_64bits = sys.maxsize > 2**32 

Nota: esto puede devolver un resultado incorrecto si Python 32 bits se ejecuta en un sistema operativo de 64 bits.

+2

Si Python tiene 32 bits y Windows tiene 64 bits, ¿qué significa esto? – agf

+6

Devuelve False. – Taymon

+0

¡Gracias! Esta parece ser la solución. – Semaj

4

Un método alternativo. Definitivamente funciona en todas las plataformas:

import struct 
is_64bit = struct.calcsize('P') * 8 == 64 

Como nota, esto es parte de its.py.

+0

its.py es una obviedad, ¡así que debe cambiar su licencia de PD! Creo que sería mejor incluir las pruebas directamente en las secuencias de comandos en lugar de importar este módulo. – phobie

+0

no es mi biblioteca :) – jterrace

Cuestiones relacionadas