输入消息:win32上的[MSC v.1500 64位(AMD64)]

Har*_*Har 16 python python-2.7

我想知道,当我启动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.
>>>
Run Code Online (Sandbox Code Playgroud)

我使用64位python,但为什么它提到win32而不是win64?

aba*_*ert 17

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不会将平台信息塞入编译器名称字段.**但我猜他们认为这很重要,而且没有别的地方可以去了.:)

无论如何,获取此信息的安全方法不是尝试从横幅中解析它,而是sys.maxsize.bit_length() > 32在Python 3.x或sys.maxsize > 2**32Python 2.x上使用.(注意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)].