98


13

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

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

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

2 Answer


170


import platform
platform.architecture()

Python docsから:

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

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


58


一部のプラットフォームで動作する可能性がありますが、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)