将新版本的python添加到PATH有什么危险吗?即一些重要的系统程序会崩溃吗?
假设这没有删除旧的 python2,而是有效地将命令“python”更改为指向 python3(或 python2 的非默认版本)。即使更改不影响 root 是否不安全?
答案1
长话短说~
你可能安全了,但是...
有危险。这就是为什么python
许多发行版的命令行默认值仍然是 python 2。
这真的会伤害你吗?
如果不知道哪个 Linux 发行版拥有哪些软件包,就不可能知道。我怀疑是否有人能够全面监督世界上每个可用的软件包,以知道如果您尝试这样做会出现什么问题。
然而,随着时间的推移,危险会越来越小。 Python 3 正在成熟,那些仍在使用 python 2 的人更加意识到危险,这意味着他们可以防范它。此时危险可能足够低,这样你就可以逃脱惩罚。
有什么危险?
有很多在linux上运行的程序都是用python编写的。您可能没有意识到您正在使用 python,因为您将它们作为可执行文件调用。他们使用舍邦调用 python 而无需显式调用它。
问题是很多程序都是为 python 2 编写的,谁是 shebang曾是设置#!/usr/bin/python
。同样,调用 puthon 脚本的 shell 脚本也很容易简单地调用python script.py
.如果你改用/usr/bin/python
Python 3,那么很多程序都会崩溃。然而,随着时间的推移,大多数旧程序已被修改以请求特定版本(/usr/bin/python2
甚至/usr/bin/python2.7
)。由于造型问题,Python 3 程序被迫指定一个版本。
更改前检查
我不会在生产服务器上改变它,除非你有一个真正的真的好理由。但是,如果您要更换自己的笔记本电脑,则风险应该会低得多。
我会尝试运行它以确保:
grep /usr/bin/python /usr/bin/* /usr/sbin/* 2> /dev/null
...查找任何/usr/bin/python
不指定版本的调用。如果那里什么都没有,那就继续尝试吧。只是要留意意外发生的事情。
答案2
如果没有更多关于为什么你会做你所要求的事情的细节,除了一个通用的答案之外很难写出任何东西。
如果您考虑将 3.7.x 添加到现有的 2.7.y 中,原则上不会有发生任何不良情况的风险。这两个版本的 Python 将被隔离并带有不同的依赖树。它们可以毫无问题地共存于一个系统上。它们也可以同时运行。
另一方面,如果您运行 3.4.z 的实例并且想要并行安装 3.7.x,我强烈建议您不要这样做。与不同版本相关的某些库和依赖项无疑将具有相同的名称,并将被最后一次安装所替换,这将破坏先前版本中的内容。在这种特殊情况下,最好建议您直接升级到最新版本的 Python。
如果您需要为不同的作业运行不同的库版本,您可以随时求助于 Jupyter 笔记本。它们允许您对不同版本及其包进行一定程度的隔离。
编辑:
根据您的评论,在并排安装 3.7 和 2.7 时,您的两个 python 版本之一的安装将位于可执行文件的默认路径上。说它是python 3.7。另一种将像往常一样通过调用python2
cli 来使用。如果 python 2.7 最终位于您的 PATH 变量中,那么要运行 Python 3.7,您将需要python3
在 cli 上发出命令。最后要找出哪个是哪个,只需python --version
在 cli 中运行,您将看到哪个可以作为调用python
,哪个必须使用 2 或 3 个数字后缀调用。
这在大多数发行版和几乎所有版本中都很常见。