如何确定我的 python shell 是以 32 位还是 64 位执行的?

新手上路,请多包涵

我需要一种方法来从 shell 内部判断 shell 处于什么模式。

虽然我主要是 OS X 用户,但我也有兴趣了解其他平台。

我试过查看 平台 模块,但它似乎只告诉你“关于位架构和用于可执行文件的链接格式”:尽管二进制文件被编译为 64 位(我在 OS X 10.6 上运行)所以它似乎总是报告 64 位,即使我使用 这里描述 的方法强制 32 位模式)。

原文由 jkp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 290
2 个回答

一种方法是查看 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

原文由 Ned Deily 发布,翻译遵循 CC BY-SA 4.0 许可协议

在终端/命令行中启动 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。适用于我的特定设置。

原文由 Dustin 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题