如何在 Debian 系统范围内使 `python` 成为 `python3` 的别名

如何在 Debian 系统范围内使 `python` 成为 `python3` 的别名

我的 Debian 测试系统的最新更新删除了 Python 版本 2,我只安装了 Python 3,带有python3.不再有任何名为 的命令python。这会导致多个脚本失败,包括与 Python 3 兼容的脚本。

我有兴趣知道将 全局配置python为 别名的正确方法是什么python3

一种肮脏的解决方案是手动执行类似的操作sudo ln -s /usr/bin/python{3,},但我担心这对于未来的 APT 更新(或者如果稍后重新安装 Python 2)可能不稳健。另一种选择是设置别名,但它只适用于我的用户,不适用于整个系统。

我还注意到,在 Ubuntu 上有一个软件包python-is-python3可以精确执行此操作,但 Debian 上没有这样的软件包。

答案1

看起来 Debian 已经发布了python 是 python3它们本身(在 Debian 11 及更高版本中),因此问题的前提不再成立,您可以:sudo apt update && sudo apt install python-is-python3

答案2

如果你想坚持/usr除了之外的所有内容都/usr/local应该来自一个包的规则,我实际上会下载包裹python-is-python3并安装它。它仅提供/usr/bin/python符号链接和所需的文档,并且其包关系不太可能在将来引起问题。

别名对你的脚本的 shebangs 没有帮助,并且考虑到 Python 包不使用替代方案,创建你自己的替代方案(update-alternatives等)不会是一个可靠的解决方案。

如果您的脚本使用/usr/bin/env python,您可以手动添加链接/usr/local/bin

无论您决定做什么,从现在开始,Debian 中依赖于 Python 的软件包都需要在其 shebangs 中显式使用python2python3,这样您就不会遇到由官方存储库中的软件包引起的问题(在 Debian 11 及更高版本中,不包括目前不稳定且处于实验阶段,因为它们仍然具有尚未清理的旧 Python 包)。

相关内容