我正在为我的系统编译几个不同版本的Python,我想知道在源代码中,startup横幅是在哪里定义的,这样我就可以为每个版本更改它。例如,当解释器启动时显示
Python 3.3.1 (default, Apr 28 2013, 10:19:42)
[GCC 4.7.2 20121109 (Red Hat 4.7.2-8)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
我想把字符串default
改成其他东西来表示我使用的是哪个版本,但我也对整个shebang是如何组装的感兴趣。这是在哪里定义的?在
看起来,如果在构建之前添加一个mercurial标记,那么
default
将被替换为标记的名称(source:Modules/getbuildinfo.c
:_Py_hgidentifier()
)基本上看起来它选择了名称
default
,因为这是分支的名称。看起来解释器是用标记名(如果有)构建的,或者如果当前工作副本上不存在标记(除了tip
)则使用分支的名称。在让我们用
grep
进入球场。我不打算费心去搜索default
,因为我会得到太多的结果,但是我会尝试Type "Help"
,它应该不会出现太多次。如果是C字符串,引号将被转义。我们应该先查找C字符串,然后再查找Python字符串。在它在
^{pr2}$Modules/main.c
,在Py_Main()
中。更多的挖掘给了我们这样一条线索:因为“on”在格式字符串中,}必须给出我们想要的字符串。。。在
Py_GetPlatform()
必须是linux
,而{看起来很有希望。。。在
我们必须要
Py_GetBuildInfo()
,因为它在括号内。。。在这看起来有点太明显了。在
因此,
default
是Mercurial分支的名称。通过检查makefile,我们可以发现这来自宏HGTAG
。名为HGTAG
的makefile变量生成该变量,该变量作为命令运行。所以简单解决方案
在构建Python时
相关问题 更多 >
编程相关推荐