42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
|
"""is64bit.Python() --> boolean value of detected Python word size. is64bit.os() --> os build version"""
|
||
|
import sys
|
||
|
|
||
|
|
||
|
def Python():
|
||
|
if sys.platform == "cli": # IronPython
|
||
|
import System
|
||
|
|
||
|
return System.IntPtr.Size == 8
|
||
|
else:
|
||
|
try:
|
||
|
return sys.maxsize > 2147483647
|
||
|
except AttributeError:
|
||
|
return sys.maxint > 2147483647
|
||
|
|
||
|
|
||
|
def os():
|
||
|
import platform
|
||
|
|
||
|
pm = platform.machine()
|
||
|
if pm != ".." and pm.endswith("64"): # recent Python (not Iron)
|
||
|
return True
|
||
|
else:
|
||
|
import os
|
||
|
|
||
|
if "PROCESSOR_ARCHITEW6432" in os.environ:
|
||
|
return True # 32 bit program running on 64 bit Windows
|
||
|
try:
|
||
|
return os.environ["PROCESSOR_ARCHITECTURE"].endswith(
|
||
|
"64"
|
||
|
) # 64 bit Windows 64 bit program
|
||
|
except IndexError:
|
||
|
pass # not Windows
|
||
|
try:
|
||
|
return "64" in platform.architecture()[0] # this often works in Linux
|
||
|
except:
|
||
|
return False # is an older version of Python, assume also an older os (best we can guess)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
print("is64bit.Python() =", Python(), "is64bit.os() =", os())
|