交互式python解释器的欢迎信息来自哪里?

交互式python解释器的欢迎信息来自哪里?,python,Python,在Linux shell上输入python时,将打印欢迎消息: [root@localhost ~]# python Python 2.7.5 (default, Nov 20 2015, 02:00:19) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. 这些台词是从哪里来的?它们是在编译或安装期间确定

在Linux shell上输入
python
时,将打印欢迎消息:

[root@localhost ~]# python
Python 2.7.5 (default, Nov 20 2015, 02:00:19)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
这些台词是从哪里来的?它们是在编译或安装期间确定的吗

我的系统上有另一个版本的
python
可执行文件和一组libs,但是当我输入
python
时,它也会显示与上面相同的欢迎消息

谢谢

更新:

我使用绝对路径来启动另一个版本的python。刚刚发现欢迎消息的内容与sys.version和sys.platform相同。但是如果我将另一个版本的python复制到另一台Linux机器B上,并且仍然使用绝对路径来运行它。我明白了

Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

此欢迎消息与机器B的python相同。

编辑:C版本源代码类似:

哪个
Py\u GetVersion()
返回基于宏的版本

所以这是编译时决定的,你可能有一个混乱的路径


旧答案,实际上只是一个python模块


不确定这是否回答了你的问题,但知道它仍然很有趣。

我终于找到了原因。第二个
python
二进制加载.so文件,并按如下方式加载libpython:

libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f087cf58000)

这与我的系统
python
相同。将
LD\u LIBRARY\u PATH
设置到第二个
python
的lib目录后,我可以看到正确的欢迎消息

我不知道为什么会被否决。也许这不是最有趣的,但我不知道它是从哪里来的。其中一半是由于你调用的是哪个版本的python。您的问题是否不是关于生成输出的内容,而是关于如何调用特定的python解释器的内容?您是否检查了“当您输入另一个解释器时”是否实际调用了同一个解释器-由于路径、符号链接或其他原因?#@roganjosh和patrick artner,我刚刚更新了。我使用了绝对路径来运行另一个python。这是
code
模块,但不是交互模式的实际实现。您现在看到的是C,但C的错误部分。您看到的是
python--version
处理的一部分,而不是交互标题。好吧,见鬼,再次更新Lol。。。希望我今天能做对time@user2357112我很好奇你为什么不回答这个问题?@roganjosh:我已经写了大部分答案,但是这个答案的最新版本最终使用了正确的源代码,所以我没有费心发布它。
/* Version as a string */
#define PY_VERSION          "3.7.0a0"
    if banner is None:
        self.write("Python %s on %s\n%s\n(%s)\n" %
                   (sys.version, sys.platform, cprt,
                    self.__class__.__name__))
    elif banner:
        self.write("%s\n" % str(banner))
libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f087cf58000)