关于 Linux 系统自带的 python2.7 为啥不更换成 python3 的疑惑

2019-07-11 17:41:15 +08:00
 Hopetree

目前发行的 linux 系统自带的 Python 都是 2.7 的版本(我直说常用的几个版本,据我所了解的),用 Python 的人都知道 Python2 和 Python3 有很多不一样的语法还有内置库,有的人还笑称这是两个不同的语言,正因为这个,所以在编写自动化脚本的时候,如果脚本是要在服务器上面执行(非虚拟环境),那么一定要兼容 Python2.

据我所知,python2 作为 linux 内置的,所以很多其他软件对这个有依赖,所以一般服务器上面也不会把 Python2 升级成 Python3,而是单独下载 Python3 使用。

重点:基于上述的现状,似乎说明 Python2 是不能够短时间被遗弃,这两个版本还是长期并存。但是我发现容器的 Python 镜像有不同版本的 linux 系统,比如 Ubuntu,centos,都是 Python3 作为基础 Python 版本,而非 Python2,所以问题来了:既然在容器里面可以丢掉 python2,为什么发行版的 linux 不可以(或者说没有这样做)?

8084 次点击
所在节点    Python
38 条回复
reus
2019-07-11 20:27:45 +08:00
它们就是不同的语言,所以没有什么可以“更换”的,你能把 python 更换成 perl 吗?
billlee
2019-07-11 21:46:54 +08:00
你还可以发现容器里用不了 less, vi, man. 基础镜像是非常精简的,所以依赖就少了。
Takamine
2019-07-11 21:59:32 +08:00
@lihongjie0209 2333,我干过然后发现 yum 什么也一起 GG 了。:doge:
hoyixi
2019-07-11 22:01:03 +08:00
道理很简单。Linux 各大厂商,主业是做服务器系统的,全世界已经存在的、正在运行的、不计其数的各种系统,依赖关系根本没法估计,只能向下兼容。

比如你维护一条铁路,上面跑了各种火车,但是轨距都是 X,你可以各种维护和升级铁路设施,但是你不能改轨距,因为上面有好多火车,总不能为了你铁路升级,全部换(升级)火车吧~

但是你要新建一条铁路,采用新轨距,简单多了。
msg7086
2019-07-11 22:15:52 +08:00
你都说了 Python2 和 Python3 是两个语言了。
他们现在就是两套独立的程序。
所以他们是否被安装和使用也是独立的。
ysn2233
2019-07-11 22:26:34 +08:00
因为发行版不同,arch manjaro 早就默认 python3 了
Hopetree
2019-07-11 23:36:47 +08:00
@ChillyPrince 的确,很多人连我想表达的观点都没读懂,感觉现在很多人在回复别人抛出的问题的时候都喜欢先入为主,根本不去看别人想表达的意思
nexply1920
2019-07-12 00:32:28 +08:00
你看看各发行版最新的版本,已经开始更换 python3 系列了
gavindexu
2019-07-12 00:33:48 +08:00
@WingOnSummit minimal 还是 2.7
mrcn
2019-07-12 01:39:35 +08:00
linux 的依赖关系太复杂了,普通发行版不是想换就换的。就算默认 py3,随便装点东西就又会装 2。容器不同,里面会装哪些东西是确定的。
ouqihang
2019-07-12 07:18:26 +08:00
树莓派,官方系统。之前手贱把 bin 里面 python 改到了 python3,某次更新系统,configparser 因为 python2 python3 里面名称不同,当时就更新失败了(但流程走了一半),重启后系统直接挂了。鬼知道还有哪些重要的程序依赖 python2。
wnpllrzodiac
2019-07-12 08:21:22 +08:00
你的系统 too old 了吧,新系统都是与时俱进的
k9982874
2019-07-12 08:43:08 +08:00
@Jirajine #10 arch 新版已经去掉 py2.7
liuxey
2019-07-12 08:46:58 +08:00
以现在发行版的复杂度,py2 一改就废
www5070504
2019-07-12 11:54:11 +08:00
yum 对 python2 有依赖
lxmmmm
2019-07-12 14:52:49 +08:00
新一点的 Linux 发行版 有把 python2 去掉的,比如 Ubuntu 自 18.04 起就默认 python3 了;
另外,系统默认的 python 版本最好不要动。别说把默认的 python2 改成 python3 了,就算是默认的 python3.6 改成 python3.7 都会有各种莫名奇妙的问题。反正 python 本身就可以多个版本共存的,再装一个就是
necomancer
2019-07-12 17:09:15 +08:00
arch 默认 python->python3,所有依赖 python2 的包会自动指向 python2
lolizeppelin
2019-07-12 17:51:35 +08:00
@ChillyPrince

还不是一个道理,容器里的系统是个精简的系统,就一些 glibc 之类的最基础的组件,没有 python 依赖,你用 py2.4 都可以

正常系统里有大量 python 依赖所以不能升级

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/582104

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX