我需要一种方法从外壳内部告诉外壳处于什么模式。
虽然我主要是OS X用户,但我也有兴趣了解其他平台。
我试着看平台模块,但它似乎只告诉你“关于可执行文件使用的位架构和链接格式”:二进制文件被编译为64位(我在OS X 10.6上运行),所以它似乎总是报告64位,即使我使用这里描述方法强制32位模式)。
一种方法是查看sys.maxsize作为记录的在这里:
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)
在Windows操作系统下,执行相同的命令,格式如下:
python -c "import sys;print(\"%x\" % sys.maxsize, sys.maxsize > 2**32)"
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通用二进制文件的情况下。
platform.architecture()
$ 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
尝试使用ctypes来获取void指针的大小:
import ctypes print ctypes.sizeof(ctypes.c_voidp)
32位是4位,64位是8位。
基本上是Matthew Marshall答案的变体(使用来自std.library的struct):
import struct print struct.calcsize("P") * 8
对于非编程解决方案,请查看活动监视器。它将64位进程的体系结构列为“Intel(64位)”。
当在终端/命令行中启动Python解释器时,你可能还会看到这样一行:
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32
其中[MSC v.1500 64 bit (AMD64)]表示64位Python。
[MSC v.1500 64 bit (AMD64)]
C:\Users\xyz>python Python 2.7.6 (default, Nov XY ..., 19:24:24) **[MSC v.1500 64 bit (AMD64)] on win 32** Type "help", "copyright", "credits" or "license" for more information. >>>
在CMD中点击python后
import platform print(platform.architecture())
它给了我
(64bit, 'ELF')
platform.architecture()注释说:
< p >注意: 在Mac OS X(也许还有其他平台)上,可执行文件可能是包含多种架构的通用文件 为了获得当前解释器的“64位”,它更可靠 查询sys. xml文件。最大尺寸属性:< / p >
import sys is_64bits = sys.maxsize > 2**32
打开python控制台:
import platform platform.architecture()[0]
它应该显示'64bit'或'32bit'根据您的平台。
__abc0 (__abc1):
import sys sys.maxsize > 2**32 # it should display True in case of 64bit and False in case of 32bit
struct.calcsize("P")返回存储单个指针所需的字节大小。在32位系统上,它将返回4个字节。在64位系统上,它将返回8个字节。
struct.calcsize("P")
因此,如果你运行的是32位的python,则返回32;如果你运行的是64位的python,则返回64:
32
64
Python 2
import struct;print struct.calcsize("P") * 8
Python 3
import struct;print(struct.calcsize("P") * 8)
import sys print(sys.version)
3.5.1 (v3.5.1:37a07cee5969, 2015年12月6日01:54:25)[MSC v.1900 64位(AMD64)]
平台架构不是可靠的方式。 而不是我们:< / p >
$ 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)
分组的一切……
考虑到:
我将在这3个平台上使用Python 3和Python 2举例说明。
0x100000000
2 ** 32
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 2.7.10 (default, Oct 14 2015, 05:51:29) \n[GCC 4.8.2] on darwin' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True) 李< /引用> < / > 李< / ul > < / > <李> Ubuntu 16 x64: <李> Python 3.5.2 x64: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609] on linux' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True) 李< /引用> < / > <李> Python 3.6.4 x86: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.4 (default, Apr 25 2018, 23:55:56) \n[GCC 5.4.0 20160609] on linux' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True) 李< /引用> < / > <李> Python 3.6.2 x86: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 2.7.10 (default, Oct 14 2015, 05:51:29) \n[GCC 4.8.2] on darwin' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True)
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609] on linux' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True) 李< /引用> < / > <李> Python 3.6.4 x86: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.4 (default, Apr 25 2018, 23:55:56) \n[GCC 5.4.0 20160609] on linux' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True) 李< /引用> < / > <李> Python 3.6.2 x86: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609] on linux' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True)
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.4 (default, Apr 25 2018, 23:55:56) \n[GCC 5.4.0 20160609] on linux' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True) 李< /引用> < / > <李> Python 3.6.2 x86: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.4 (default, Apr 25 2018, 23:55:56) \n[GCC 5.4.0 20160609] on linux' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False)
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True) 李< /引用> < / > <李> Python 3.6.2 x86: >>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffffffffffff', True)
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False) 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import sys >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform) 'Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32' >>> hex(sys.maxsize), sys.maxsize > 0x100000000 ('0x7fffffff', False)
< br >
sizeof(void*)
>>> import struct >>> struct.calcsize("P") * 8 64 李< /引用> < / > 李< / ul > < / > <李> Ubuntu 16 x64: <李> Python 3.5.2 x64: >>> import struct >>> struct.calcsize("P") * 8 64 李< /引用> < / > <李> Python 3.6.4 x86: >>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import struct >>> struct.calcsize("P") * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import struct >>> struct.calcsize("P") * 8 64
>>> import struct >>> struct.calcsize("P") * 8 64 李< /引用> < / > <李> Python 3.6.4 x86: >>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import struct >>> struct.calcsize("P") * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import struct >>> struct.calcsize("P") * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import struct >>> struct.calcsize("P") * 8 32
>>> import struct >>> struct.calcsize("P") * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import struct >>> struct.calcsize("P") * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64 李< /引用> < / > 李< / ul > < / > <李> Ubuntu 16 x64: <李> Python 3.5.2 x64: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64 李< /引用> < / > <李> Python 3.6.4 x86: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64
>>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64 李< /引用> < / > <李> Python 3.6.4 x86: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32
>>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 64 李< /引用> < / > <李> Python 3.6.2 x86: >>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import ctypes >>> ctypes.sizeof(ctypes.c_void_p) * 8 32 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import platform >>> platform.architecture() ('64bit', '') 李< /引用> < / > 李< / ul > < / > <李> Ubuntu 16 x64: <李> Python 3.5.2 x64: >>> import platform >>> platform.architecture() ('64bit', 'ELF') 李< /引用> < / > <李> Python 3.6.4 x86: >>> import platform >>> platform.architecture() ('32bit', 'ELF') 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import platform >>> platform.architecture() ('64bit', 'WindowsPE') 李< /引用> < / > <李> Python 3.6.2 x86: >>> import platform >>> platform.architecture() ('32bit', 'WindowsPE') 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import platform >>> platform.architecture() ('64bit', '')
>>> import platform >>> platform.architecture() ('64bit', 'ELF') 李< /引用> < / > <李> Python 3.6.4 x86: >>> import platform >>> platform.architecture() ('32bit', 'ELF') 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import platform >>> platform.architecture() ('64bit', 'WindowsPE') 李< /引用> < / > <李> Python 3.6.2 x86: >>> import platform >>> platform.architecture() ('32bit', 'WindowsPE') 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import platform >>> platform.architecture() ('64bit', 'ELF')
>>> import platform >>> platform.architecture() ('32bit', 'ELF') 李< /引用> < / > 李< / ul > < / > <李> win10 x64: <李> Python 3.5.4 x64: >>> import platform >>> platform.architecture() ('64bit', 'WindowsPE') 李< /引用> < / > <李> Python 3.6.2 x86: >>> import platform >>> platform.architecture() ('32bit', 'WindowsPE') 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import platform >>> platform.architecture() ('32bit', 'ELF')
>>> import platform >>> platform.architecture() ('64bit', 'WindowsPE') 李< /引用> < / > <李> Python 3.6.2 x86: >>> import platform >>> platform.architecture() ('32bit', 'WindowsPE') 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import platform >>> platform.architecture() ('64bit', 'WindowsPE')
>>> import platform >>> platform.architecture() ('32bit', 'WindowsPE') 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import platform >>> platform.architecture() ('32bit', 'WindowsPE')
>>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /opt/OPSWbuildtools/2.0.6/bin/python2.7.global: Mach-O 64-bit executable x86_64 李< /引用> < / > 李< / ul > < / > <李> Ubuntu 16 x64: <李> Python 3.5.2 x64: >>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /usr/bin/python3.5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=59a8ef36ca241df24686952480966d7bc0d7c6ea, stripped 李< /引用> < / > <李> Python 3.6.4 x86: >>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /home/cfati/Work/Dev/Python-3.6.4/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5c3d4eeadbd13cd91445d08f90722767b0747de2, not stripped 李< /引用> < / > 李< / ul > < / > <李> win10 x64: 文件实用程序不存在,还有其他3理查德·道金斯 Party工具可以使用,但我不打算坚持使用它们 李< / ul > < / > 李< / ul > < / >
>>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /opt/OPSWbuildtools/2.0.6/bin/python2.7.global: Mach-O 64-bit executable x86_64
>>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /usr/bin/python3.5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=59a8ef36ca241df24686952480966d7bc0d7c6ea, stripped 李< /引用> < / > <李> Python 3.6.4 x86: >>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /home/cfati/Work/Dev/Python-3.6.4/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5c3d4eeadbd13cd91445d08f90722767b0747de2, not stripped 李< /引用> < / > 李< / ul > < / > <李> win10 x64: 文件实用程序不存在,还有其他3理查德·道金斯 Party工具可以使用,但我不打算坚持使用它们 李< / ul > < / > 李< / ul > < / >
>>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /usr/bin/python3.5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=59a8ef36ca241df24686952480966d7bc0d7c6ea, stripped
>>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /home/cfati/Work/Dev/Python-3.6.4/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5c3d4eeadbd13cd91445d08f90722767b0747de2, not stripped 李< /引用> < / > 李< / ul > < / > <李> win10 x64: 文件实用程序不存在,还有其他3理查德·道金斯 Party工具可以使用,但我不打算坚持使用它们 李< / ul > < / > 李< / ul > < / >
>>> import os >>> os.system("file {0:s}".format(os.path.realpath(sys.executable))) /home/cfati/Work/Dev/Python-3.6.4/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5c3d4eeadbd13cd91445d08f90722767b0747de2, not stripped
>>> import os >>> os.environ["PROCESSOR_ARCHITECTURE"] 'AMD64' 李< /引用> < / > <李> Python 3.6.2 x86: >>> import os >>> os.environ["PROCESSOR_ARCHITECTURE"] 'x86' 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import os >>> os.environ["PROCESSOR_ARCHITECTURE"] 'AMD64'
>>> import os >>> os.environ["PROCESSOR_ARCHITECTURE"] 'x86' 李< /引用> < / > 李< / ul > < / > 李< / ul > < / >
>>> import os >>> os.environ["PROCESSOR_ARCHITECTURE"] 'x86'
platform.architecture()是有问题的(并且昂贵)。
方便地从Py2.6开始测试sys.maxsize > 2**32。
sys.maxsize > 2**32
这是对实际(默认)指针大小的可靠测试,至少从Py2.3: struct.calcsize('P') == 8开始是兼容的。还:ctypes.sizeof(ctypes.c_void_p) == 8。
struct.calcsize('P') == 8
ctypes.sizeof(ctypes.c_void_p) == 8
注意:可以有gcc选项-mx32左右的构建,它们是64位体系结构应用程序,但默认使用32位指针(节省内存和速度)。的系统。maxsize = ssize_t'可能并不严格代表C指针的大小(通常是2**31 - 1)。有些系统对代码和数据有不同的指针大小,需要澄清的是,区分“32位模式还是64位模式”的目的究竟是什么?
-mx32
2**31 - 1
在命令行中执行python -VV。它应该返回版本。
python -VV
基于abe32的回答,
import sys n_bits = 32 << bool(sys.maxsize >> 32)
N_bits将有32或64位。
对于32位,它将返回32,对于64位,它将返回64
import struct print(struct.calcsize("P") * 8)
在Windows 10
打开cmd终端,输入>python启动python解释器,如下图所示
如果解释器信息在开始时包含AMD64,则为64位,否则为32位。
试试这个:
import platform platform.architecture()