GCC与Python解释器有什么关系?

14

我刚在我的 Macintosh 上注意到了这一点。运行 $ python 会启动一个解释器会话,并显示以下内容:

$ python2.7
Python 2.7.10 (default, Feb  6 2017, 23:53:20) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

启动文本的第二行提到了GCC和Clang版本。

这两者与Python解释器有什么关系?考虑到Python是一种解释型语言,根本不应该提及编译器,因此我很好奇为什么会显示这个信息。

现在是Python3.6的情况:

$ python3.6
Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

这次没有提及clang,为什么呢?


7
这取决于 Python 解释器编译时所使用的东西。 - Ry-
@Ryan 哦,这比我想象的简单多了。:0 为什么2.7同时提到gcc和clang,而3.6只提到gcc呢? - cs95
1
@Coldspeed:你需要向苹果公司询问他们如何构建Python。 - Martijn Pieters
Python仍然是编译型语言。不像其他语言一样提前编译成机器码,而是编译成字节码。可以查看 - pstatix
2
@Coldspeed:OS X 默认没有安装 Python 3.6,所以您是从其他地方安装的。打包后者的安装程序的人也可能知道他们如何配置构建环境。不同的人可能正在使用不同的工具链。 - Martijn Pieters
显示剩余2条评论
1个回答

16

CPython解释器本身是使用C语言编写的。将C代码转换为二进制可执行文件时使用的编译器很重要,行为和性能可能会以微妙的方式有所不同,因此在横幅中提到了这一点。

你有两个不同的Python二进制文件,横幅中的差异反映了构建这些二进制文件的方式不同。由于Python 2.7版本是捆绑在OS X上的版本,所以它是由苹果工程师使用不同的工具链(clang编译器)构建的,而你必须单独安装Python 3.6版本(OS X还没有包含Python 3.6)。后者是使用GCC编译器编译的。


请问一下,解释器的源代码是否公开可供查阅?你有我可以看的链接吗?快速搜索没有找到任何信息。 - cs95
2
@Coldspeed:是的,Python是开源软件。只需从Python.org下载或查看GitHub存储库即可。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接