Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 输入消息:[MSC v.1500 64位(AMD64)]在win32上_Python_Python 2.7 - Fatal编程技术网

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

Python 输入消息:[MSC v.1500 64位(AMD64)]在win32上,python,python-2.7,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. >>> 我正在使用64位python,但为什么它提到win32而不是win32?win32是Windows NT/95

我在想,当我启动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而不是win32?

win32
是Windows NT/95 API的通用名称,无论您是在32位还是64位操作系统上(甚至是在16位操作系统上使用win32)*

64位(AMD64)
告诉您它是一个64位Python,为64位Win32操作系统构建,所以一切都很好

win32与您在中看到的字符串相同,它记录了您应该看到的每个受支持平台的字符串

[MSC v.1500 64位(AMD64)]
标识编译器。在其他平台上,Python不会将平台信息填充到编译器名称字段中。**但我猜他们认为这很重要,没有其他地方可以使用它。:)

无论如何,获取此信息的安全方法不是试图从横幅中解析它,而是在Python 3.x上使用
sys.maxsize.bit_length()>32
,或者在Python 2.x上使用
sys.maxsize>2**32
。(请注意,这特别表明。)


*为什么??谁知道呢。一些文档确实谈到了“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兼容的Apple LLVM 6.0(clang-600.0.39)]
它只是指windows平台,而不是您的体系结构是32位的。MSC v.1500 64位(AMD64)意味着它被编译为64位应用程序

这很有趣,因为在Linux上我得到了以下信息:[GCC 4.7.1 20120720(Red Hat 4.7.1-5)]在linux2上它说的是Linux 2,这可能意味着Linux 2 api?@Har:是的,要切换到平台/uname,你总是必须测试
u.startswith('Linux')
(和
u.lower()='cygwin'
,为了额外的乐趣),与之相对的是
u=='win32'
u=='darwin'
。尽管我认为
linux2
最初指的是任何带有glibc2.3+的linux内核,而不是
linux
,后者是带有glibc2.2的linux。然后在某个点上,它变为
linux2
linux3
,这取决于内核(基于
uname-s
加上
uname-r
返回的内容),然后总是
linux2
不管发生什么,最终他们决定(在3.3+中)只调用所有
linux
.PS,感谢这个问题;昨天我只是想记住Windows上的编译器字符串是什么样子,我的Windows VM磁盘空间不足。:)