如何确定我的Python shell是在32位还是64位运行?
17 个回答
232
基本上这是对Matthew Marshall回答的一个变种(使用了标准库中的结构体):
import struct
print struct.calcsize("P") * 8
301
当你在终端或命令行中启动Python解释器时,你可能会看到类似下面的一行信息:
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32
这里的[MSC v.1500 64 bit (AMD64)]
表示你正在使用的是64位的Python。这是针对我自己电脑的设置来说的。
501
一种方法是查看 sys.maxsize
,详细信息可以在 这里找到:
$ 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)
在Windows上,可以按照以下格式运行相同的命令:
python -c "import sys;print(\"%x\" % sys.maxsize, sys.maxsize > 2**32)"
sys.maxsize
是在Python 2.6中引入的。如果你需要在旧系统上进行测试,这个稍微复杂一点的测试应该适用于所有Python 2和3的版本:
$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64
顺便提一下,你可能会想用 platform.architecture()
来做这个。不过,它的结果并不总是可靠,特别是在OS X的通用二进制文件情况下。
$ 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