我想知道,当我启动python时,我收到以下消息:
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
我使用的是64位python,但为什么它提到win32而不是win64?
答案 0 :(得分:13)
win32
是Windows NT / 95 API的通用名称,无论您使用的是32位还是64位操作系统(甚至是在16位操作系统上使用Win32)。 *功能
64 bit (AMD64)
告诉你它是一个64位的Python,是为64位Win32操作系统而构建的,所以一切都很好。
win32
与您在sys.platform
中看到的字符串相同,它记录了您应该为每个支持的平台看到的字符串。
[MSC v.1500 64 bit (AMD64)]
标识编译器。在其他平台上,Python不会将平台信息塞进编译器名称字段。 ** 但我猜他们认为这很重要,而且没有其他地方可以去了。 :)
无论如何,获取此信息的安全方法不是尝试从横幅中解析它,而是在Python 3.x上使用sys.maxsize.bit_length() > 32
,或在Python 2.x上使用sys.maxsize > 2**32
。 (请注意platform.architecture
特别建议。)
*为什么?谁知道。有些文档确实谈到了“Win32 / Win64 API”,尽管在大多数当前的文档中他们都避免使用它并说“Windows API”。这可能与他们在“Win32”,“Windows”和“Windows API”上有商标,而不是“Win64”,“Win32 API”或“Win64 API”...
**部分是因为它无法知道在编译时,如果Python可以构建为多个体系结构的通用二进制文件。例如,我Mac上的Python 2.7.6同时包含x86和x86_64代码;如果我运行前者,它是32位,如果我运行后者,则是64位。所以编译器只是说[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)]
。
答案 1 :(得分:2)
它只适用于Windows平台,而不是您的架构是32位。 MSC v.1500 64 bit (AMD64)
表示它被编译为64位应用程序。