交互式python解释器的欢迎信息来自哪里?
在Linux shell上输入交互式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. 这些台词是从哪里来的?它们是在编译或安装期间确定
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)