检查Python是64位还是32位的命令是什么

37 投票
4 回答
46497 浏览
提问于 2025-04-16 18:13

我找不到任何命令来检查我的Python是为32位系统还是64位系统编译的。

我试过

python

但它只告诉我版本号。

另外,当我去Python下载网站时,他们为Linux提供了一个版本,但为Mac提供了两个版本,也就是32位和64位。

4 个回答

6

首先,打开命令提示符(cmd),然后输入

$ python

接着,输入下面这两行

>>> import platform

>>> platform.architecture()
18
import platform
platform.architecture()[0]
#'32bit'

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

56

对于Python 2.6及以上版本,你可以使用sys.maxsize,具体的说明可以在这里找到:

import sys
is_64bits = sys.maxsize > 2**32

更新:我注意到我没有真正回答提出的问题。虽然上面的测试确实可以告诉你解释器是运行在32位还是64位的架构上,但它并不能也无法回答这个解释器是为哪些架构构建的,能够运行在哪些架构上。正如问题中提到的,这在Mac OS X的通用可执行文件中是很重要的,因为一个可执行文件可能包含多个架构的代码。回答这个问题的一种方法是使用操作系统的file命令。在大多数系统上,它会报告一个可执行文件支持的架构。下面是在大多数系统的命令行中如何用一行命令来实现:

file -L $(python -c 'import sys; print(sys.executable)')

在OS X 10.6的默认系统Python中,输出结果是:

/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

在某个Linux系统上:

/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

顺便说一下,这里有一个例子说明为什么platform在这个目的上并不可靠。再次使用OS X 10.6的系统Python:

$ 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

撰写回答