How do I determine if my python shell is executing in 32bit or 64bit?
One way is to look at sys.maxsize
as documented here:
$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)
On Windows, run the same commands formatted as follows:
python -c "import sys;print(\"%x\" % sys.maxsize, sys.maxsize > 2**32)"
sys.maxsize
was introduced in Python 2.6. If you need a test for older systems, this slightly more complicated test should work on all Python 2 and 3 releases:
$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64
BTW, you might be tempted to use platform.architecture()
for this. Unfortunately, its results are not always reliable, particularly in the case of OS X universal binaries.
$ 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
How do I detect if Python is running as a 64-bit application?
import platform
platform.architecture()
From the Python docs:
Queries the given executable (defaults
to the Python interpreter binary) for
various architecture information.Returns a tuple (bits, linkage) which
contain information about the bit
architecture and the linkage format
used for the executable. Both values
are returned as strings.
Python - check if a system is 32 or 64 bit to determine whether to run the function or not?
Following this documentation, try this code:
is_64bits = sys.maxsize > 2**32
Note: this can return an incorrect result if 32bit Python is running on a 64bit operating system.
Which command to use for checking whether python is 64bit or 32bit
For Python 2.6 and above, you can use sys.maxsize
as documented here:
import sys
is_64bits = sys.maxsize > 2**32
UPDATE: I notice that I didn't really answer the question posed. While the above test does accurately tell you whether the interpreter is running in a 32-bit or a 64-bit architecture, it doesn't and can't answer the question of what is the complete set of architectures that this interpreter was built for and could run in. As was noted in the question, this is important for example with Mac OS X universal executables where one executable file may contain code for multiple architectures. One way to answer that question is to use the operating system file
command. On most systems it will report the supported architectures of an executable file. Here's how to do it in one line from a shell command line on most systems:
file -L $(python -c 'import sys; print(sys.executable)')
Using the default system Python on OS X 10.6, the output is:
/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
On one Linux system:
/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, here's an example of why platform
is not reliable for this purpose. Again using the system Python on 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
I've written a code to check whether python shell is running in 32bit or 64bit. But the code prints 8 instead of 64
According to the docs, you're actually looking for struct.calcsize("P")
. Uppercase P is the equivalent of void *
in C.
How to check if Windows is 32 or 64 bits on Python2.2
Python: How to know if the OS/CPU is 64bits
Most information you are querying is determined by the wordsize of the interpreter, not the CPU.
Only platform.machine()
ignores this information; it is taken from the system uname -m
data instead, which is the recommended command to determine if your system is 64-bit for both Linux and OS X, and Windows provides the exact same information (Python uses the C uname()
function in all cases).
Either test for 64
in that string, or build a set of acceptable values:
'64' in platform.machine()
or
platform.machine() in {'x86_64', 'AMD64'}
Installed Python with 32 bit install, appears as 64 bit
This sounds like you might have multiple instances of Python installed on your machine. Verify that you're calling the correct one by calling it explicitly from its full path, and noting if its still saying 64-bit or 32-bit.
Moving forward, using a virtualenv might simplify any confusion of which python installation, and which installed packages, are being used.
Related Topics
How to Make a Tkinter Label Background Transparent
Pandas Populate New Dataframe Column Based on Matching Columns in Another Dataframe
How to Plot Pandas Dataframe With Date (Year/Month)
How to Get Maximum Length of Each Column in the Data Frame Using Pandas Python
How to Find a Minimum Value in a 2D Array Without Using Numpy or Flattened in Python
How to Remove Empty Cell from Data Frame Row Wise
Pandas Counting and Summing Specific Conditions
Python: Pandas Pd.Read_Excel Giving Importerror: Install Xlrd >= 0.9.0 for Excel Support
Changing Only One Row to Column in Python
How to Merge Columns from Multiple CSV Files Using Python
How to Drop Rows from Pandas Data Frame That Contains a Particular String in a Particular Column
How to Clear Only Last One Line in Python Output Console
Pandas: Subtracting Two Date Columns and the Result Being an Integer
Delete Rows Containing Numeric Values in Strings from Pandas Dataframe
How to Calculate Average a Dictionary from List of Dictionary Data
Python Ttk Treeview: How to Select and Set Focus on a Row