web-dev-qa-db-ja.com

pythonが64ビットか32ビットかを確認するために使用するコマンド

pythonが32ビットシステムまたは64ビットシステム用にコンパイルされているかどうかを確認するコマンドが見つかりません。

私は試した

python

そしてそれはバージョンを伝えるだけです

また、pythonダウンロードサイトにアクセスすると、Linuxには1つのバージョンのpythonがありますが、32ビットと64ビットのMacには2つのバージョンがあります。

26
Mirage

Python 2.6以降では、sys.maxsize記載どおり ここ

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

更新:出された質問に実際には答えなかったことがわかりました。上記のテストでは、インタープリターが32ビットと64ビットのどちらのアーキテクチャーで実行されているかが正確にわかりますが、このインタープリターが構築されたアーキテクチャーの完全なセットが何であるかという質問には答えられません。質問で述べたように、これは、たとえば1つの実行可能ファイルに複数のアーキテクチャのコードが含まれているMac OS Xユニバーサル実行可能ファイルで重要です。その質問に答える1つの方法は、オペレーティングシステムのfileコマンドを使用することです。ほとんどのシステムでは、実行可能ファイルのサポートされているアーキテクチャを報告します。ほとんどのシステムで、シェルコマンドラインから1行で実行する方法は次のとおりです。

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

1つの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がこの目的に対して信頼できない理由の例です。再度システムを使用Python OS X 10.6で:

$ 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
45
Ned Deily
import platform
platform.architecture()[0]
#'32bit'
7
Bentley4

まず、cmdを開いて次のように入力します

$ python

次に、次の2行を入力します

>>> import platform

>>> platform.architecture()
3
Kamal El-Saaid

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

可能な出力:

x86-64

または

Intel 80386

または

ARM

またはその他。

出力が「Intel 80386」の場合、アプリケーションは32ビットアーキテクチャです。

出力が「x86-64」の場合、アプリケーションは64ビットアーキテクチャです。