2009-12-03 15 views
73

可能性の重複:
How do I determine if my python shell is executing in 32bit or 64bit mode?Pythonが64ビットアプリケーションとして実行されているかどうかを検出するにはどうすればよいですか?

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

注:私は32ビット/ 64ビットWindowsを検出することには興味がありません。ちょうどPythonプラットフォームです。 Python docs

から
+3

重複するとマークされた質問はOSXでターゲットに設定されていますが、この質問は異なります。 – CharlesB

答えて

130
import platform 
platform.architecture() 

は 各種のアーキテクチャについては、(Pythonのインタープリタバイナリデフォルト )所定の実行を問い合わせ。

は ビットアーキテクチャと実行のために使用される連結形式 に関する情報を含むタプル(ビット、結合)を返します。両方の値 が文字列として返されます。

+4

信頼できない... http://stackoverflow.com/a/12057504/156755 – Basic

+2

誰かが2017の更新をお願いできますか?だから、すべての雑音のために混乱している。 'sys.maxsize'は今日の正しい方法ですか?あるいは' platform.architecture() 'はOS X、Win、Linux上で確実に動作しますか? –

49

platform.architectureは、Pythonが32ビット版と64ビット版のどちらで動作しているかを判断する確実な方法とは限りません。特に、いくつかの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) 
+0

詳細については感謝します。 –

+0

興味深いもの。しかし、それはバグのような少しのにおいがします。そんなにうまくいくはずですか? –

+2

私はバグだと思うでしょう。プラットフォームモジュールのコードを見ると、少し壊れやすいように見えます。この場合、Appleがマルチアーチ選択機能を実装した方法と関係しています。私は、python.org OS Xのマルチアーチ選択機能が完成したときに、これを確認するための注釈を追加しています。 –

関連する問題