小能豆

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

javascript

我怎样才能从 shell 内部判断 shell 处于什么模式?

我尝试查看平台模块,但它似乎只告诉您有关“可执行文件使用的位体系结构和链接格式”的信息。我的二进制文件编译为 64 位(我在 OS X 10.6 上运行),因此即使我使用此处描述的方法强制使用 32 位模式,它似乎也总是报告 64 位。


阅读 43

收藏
2024-07-02

共1个答案

小能豆

要从 shell 中确定 Python 解释器是在 32 位还是 64 位模式下运行,您可以使用模块sysstruct模块检查指针的大小。这适用于不同的操作系统,包括 macOS。

以下是检查模式的两种方法:

使用sys.maxsize

sys.maxsize属性将为您提供类型变量可以采用的最大值Py_ssize_t,该值与平台相关。对于 64 位,它通常为2**63 - 1,对于 32 位,它将为2**31 - 1

import sys

if sys.maxsize > 2**32:
    print("64-bit")
else:
    print("32-bit")

使用struct.calcsize

struct模块的calcsize函数可用于确定指针的大小。在 64 位系统上,指针通常为 8 个字节,而在 32 位系统上,指针为 4 个字节。

import struct

if struct.calcsize("P") * 8 == 64:
    print("64-bit")
else:
    print("32-bit")

示例用法

您可以在 Python shell 中运行以下代码片段来检查模式:

# Using sys.maxsize
import sys

if sys.maxsize > 2**32:
    print("64-bit")
else:
    print("32-bit")
Python复制代码# Using struct.calcsize
import struct

if struct.calcsize("P") * 8 == 64:
    print("64-bit")
else:
    print("32-bit")

这两种方法都会为您提供 Python 解释器当前运行的模式。这些检查应该可以在 macOS、Linux 和 Windows 上可靠地运行。

2024-07-02