簡體   English   中英

哪個命令用於檢查 python 是 64 位還是 32 位

[英]Which command to use for checking whether python is 64bit or 32bit

我找不到任何命令來檢查我的 python 是為 32 位系統還是 64 位系統編譯的。

我試過了

python

它只告訴版本

此外,當我從 go 到 python 下載站點時,他們有一個版本的 python 用於 linux,但有兩個版本用於 mac,即 32 位和 64 位。

對於 Python 2.6 及更高版本,您可以使用此處記錄的sys.maxsize

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

更新:我注意到我並沒有真正回答提出的問題。 雖然上面的測試確實准確地告訴您解釋器是在 32 位還是 64 位架構中運行,但它沒有也不能回答這個解釋器構建的完整架構集是什么的問題並且可以運行。正如問題中所述,這對於例如 Mac OS X 通用可執行文件很重要,其中一個可執行文件可能包含多個體系結構的代碼。 回答這個問題的一種方法是使用操作系統file命令。 在大多數系統上,它會報告可執行文件的支持架構。 以下是在大多數系統上通過 shell 命令行在一行中執行此操作的方法:

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

在 OS X 10.6 上使用默認系統 Python,output 是:

/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
import platform
platform.architecture()[0]
#'32bit'

首先,打開 cmd 並輸入

$ python

然后,輸入以下兩行

>>> import platform

>>> platform.architecture()

輸入 Linux 控制台:

  1. 如果您想通過運行命令檢查應用程序是 64 位還是 32 位架構:
type -p <command_to_run_application> | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
  1. 如果您想使用應用程序的完整路徑檢查應用程序是 64 位還是 32 位架構:
file -b <full_path_to_an_application> | sed 's/, /\n/g' | sed -n 2p

例如對於Python 3對應的命令可以是:

type -p python3 | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
file -b /usr/bin/python3.5 | sed 's/, /\n/g' | sed -n 2p

可能的 output:

x86-64

或者

Intel 80386

或者

ARM

或其他。

如果 output 是“Intel 80386”,則應用程序具有 32 位架構。

如果 output 是“x86-64”,則應用程序具有 64 位架構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM