我怎样才能从 shell 内部判断 shell 处于什么模式?
我尝试查看平台模块,但它似乎只告诉您有关“可执行文件使用的位体系结构和链接格式”的信息。我的二进制文件编译为 64 位(我在 OS X 10.6 上运行),因此即使我使用此处描述的方法强制使用 32 位模式,它似乎也总是报告 64 位。
要从 shell 中确定 Python 解释器是在 32 位还是 64 位模式下运行,您可以使用模块sys或struct模块检查指针的大小。这适用于不同的操作系统,包括 macOS。
sys
struct
以下是检查模式的两种方法:
sys.maxsize
该sys.maxsize属性将为您提供类型变量可以采用的最大值Py_ssize_t,该值与平台相关。对于 64 位,它通常为2**63 - 1,对于 32 位,它将为2**31 - 1。
Py_ssize_t
2**63 - 1
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 个字节。
calcsize
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 上可靠地运行。