まず、cmd を開いて
と入力します。$ python
次に、次の 2 行を入力します
>>> import platform
>>> platform.architecture()
Linux コンソールに入力:
<ブロック引用> <オール>type -p <command_to_run_application> | xargs readlink -f | xargs file -b | sed 's/, /\n/g' | sed -n 2p
<ブロック引用> - アプリケーションへのフル パスを使用して、アプリケーションが 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 ビットです。
import platform
platform.architecture()[0]
#'32bit'
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)')
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
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
の理由の例を示します この目的では信頼できません。ここでも 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