如何确定我的python shell是在OS X上以32位还是64位模式执行?

发布于 2021-02-02 23:19:17

我需要一种方法,可以从shell内告诉shell处于哪种模式。

我尝试查看平台模块,但似乎只告诉您“有关可执行程序所使用的位架构和链接格式”的信息:尽管二进制文件编译为64位(我在OS X 10.6上运行),所以即使我使用此处介绍的方法强制使用32位模式,它似乎总是报告64 位。

关注者
0
被浏览
98
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    更新:一种方法是看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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看