2011-05-24 70 views
20

我無法找到任何命令來檢查我的python是否爲32位系統或64位系統編譯。使用哪個命令來檢查python是64位還是32位

我試圖

蟒蛇

,它只是告訴版本

而且當我去蟒蛇下載網站,他們有蟒蛇的一個版本的Linux,但兩個版本的Mac即32位和64位。

+0

哪個下載站點? python.org下載站點(http://www.python.org/download/)不提供Linux的二進制安裝程序,只提供Mac OS X和Windows。 – 2011-05-24 08:59:31

+0

我在說那個網站,我下載了tar.bz2文件。我在想,對於64位,我將有差異tar文件或其相同 – user2134226 2011-05-24 09:04:06

+1

只是一個提醒。大多數Linux發行版都默認安裝了python,如果它不是你想要的版本,你可以隨你的軟件包管理器使用不同的版本。從頭開始構建可能會破壞默認的Python安裝並影響系統功能。 – 2011-05-24 09:19:34

回答

38

對於Python 2.6及以上版本,你可以使用sys.maxsize作爲記錄here

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

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

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

使用缺省的系統的Python在OS X 10.6,輸出的是:

/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 
+2

我認爲檢查指針的大小(以字節爲單位)是跨平臺測試的最可靠/一致的方法 - 只是'import ctypes',並檢查'ctypes.sizeof(ctypes.c_void_p)'的輸出對於32位爲'4'字節,對於64位系統爲'8')。 – Breakthrough 2016-06-05 08:27:53

+0

sys是一個內置模塊,並且始終存在。導入和使用ctypes通常更昂貴,並可能在某些平臺上失敗。 – 2016-06-05 09:22:10

6
import platform 
platform.architecture()[0] 
#'32bit' 
+5

對不起,正如當前Python平臺命令文檔中所述,platform.architecture測試在所有平臺上執行時都不可靠,特別是在OS X通用版本(包含32位和64位版本)如OP所要求的那樣。它也不回答OP提出的問題,正如我在更新的答案中提到的那樣。 – 2012-08-21 18:47:47

+0

我沒有意識到這一點。謝謝你指出! – Bentley4 2012-08-21 20:18:00

1

開放CMD 然後鍵入 蟒 然後將以下兩行

進口平臺

平臺.architecture()

相關問題