1. ホーム
  2. python

[解決済み] Python シェルが 32bit で実行されているか 64bit で実行されているかを判断するにはどうすればよいですか?

2022-03-19 06:58:59

質問

シェルがどのようなモードであるかをシェル内から知る方法が必要です。

私は主にOS Xのユーザーですが、他のプラットフォームについても知りたいです。

を見てみましたが プラットフォーム しかし、それは "ビットアーキテクチャと実行ファイルに使用されるリンク形式についてしか教えてくれないようです": バイナリは64ビットとしてコンパイルされているので(OS X 10.6 で実行しています)、メソッドを使用していても常に64ビットと報告されるようです。 ここに記載されている で強制的に32bitモードにする)。

解決方法は?

一つの方法として sys.maxsize を文書化したものです。 こちら :

$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

sys.maxsize は Python 2.6 で導入されました。 もし古いシステム用のテストが必要なら、この少し複雑なテストは Python 2 と 3 のすべてのリリースで動作するはずです。

$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64

ちなみに、あなたはついつい platform.architecture() を使用します。 残念ながら、その結果は必ずしも信頼できるものではありません。 特にOS Xユニバーサルバイナリの場合 .

$ 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