web-dev-qa-db-ja.com

Pythonが64ビットアプリケーションとして実行されているかどうかを検出するにはどうすればよいですか?

可能性のある複製:
pythonシェルが32ビットモードと64ビットモードのどちらで実行されているかを確認するにはどうすればよいですか?

私はWindowsレジストリでいくつかの仕事をしています。 pythonを32ビットとして実行しているか、64ビットとして実行しているかによって、キーの値は異なります。 Pythonが32ビットアプリケーションではなく64ビットアプリケーションとして実行されているかどうかを検出するにはどうすればよいですか?

注:32ビット/ 64ビットWindowsの検出には興味がありません。Pythonプラットフォームのみです。

102
Nick Bolton
import platform
platform.architecture()

Pythonドキュメント から:

さまざまなアーキテクチャ情報について、指定された実行可能ファイル(デフォルトはPythonインタープリターバイナリ)を照会します。

ビットアーキテクチャと実行可能ファイルに使用されるリンケージ形式に関する情報を含むタプル(ビット、リンケージ)を返します。両方の値は文字列として返されます。

179
Cristian

一部のプラットフォームで動作する可能性がありますが、pythonが32ビットと64ビットのどちらで実行されているかを判断するのに、platform.architectureが必ずしも信頼できる方法ではないことに注意してください。特に、一部のOS Xマルチアーキテクチャビルドでは、以下の例に示すように、同じ実行可能ファイルがどちらのモードでも実行できる場合があります。最も迅速で安全なマルチプラットフォームアプローチは、Python 2.6、2.7、Python 3.xでsys.maxsizeをテストすることです。

$ Arch -i386 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 2147483647)
>>> ^D
$ Arch -x86_64 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 9223372036854775807)
57
Ned Deily