我的 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 中显式使用python2
或python3
,这样您就不会遇到由官方存储库中的软件包引起的问题(在 Debian 11 及更高版本中,不包括目前不稳定且处于实验阶段,因为它们仍然具有尚未清理的旧 Python 包)。