降级Python版本后终端无法启动,如何全局降级Python至兼容稳定版本?
兄弟,先别急,我之前折腾Ubuntu Python版本的时候也踩过一模一样的坑——全局替换系统Python直接把终端搞崩了,太闹心了。先给你把终端救回来,再给你说怎么安全搞定cqlsh的兼容问题,还不用碰虚拟环境。
第一步:紧急恢复终端
终端打不开是因为Ubuntu默认的GNOME Terminal(还有不少系统工具)都是依赖系统自带的Python 3.12的,你把默认换成3.9之后,终端启动时找不到适配的Python环境,直接罢工了。
你可以按Ctrl+Alt+F3切换到纯命令行的TTY控制台,输入你的用户名和密码登录。然后运行:
sudo update-alternatives --config python3
这时候会弹出所有已配置的Python3版本选项,你选系统原来的python3.12对应的编号,回车确认。之后按Ctrl+Alt+F1切回图形界面,终端应该就能正常启动了。
第二步:不用虚拟环境,让cqlsh用Python3.9,同时保留系统默认3.12
真的不建议你全局替换系统Python,Ubuntu的apt、软件更新器、甚至桌面组件都靠自带的Python撑着,换了之后指不定哪天又出各种奇奇怪怪的问题。给你个更稳妥的办法,单独让cqlsh用3.9,系统其他地方还是用3.12:
- 先确认Python3.9已经装好了(没装的话在终端里跑
sudo apt install python3.9) - 找到cqlsh的安装路径:
一般会输出which cqlsh/usr/bin/cqlsh - 编辑这个文件的开头(需要sudo权限):
把第一行的sudo nano /usr/bin/cqlsh#!/usr/bin/env python3改成#!/usr/bin/env python3.9,按Ctrl+O保存,Ctrl+X退出。 - 之后你再运行
cqlsh,它就会自动用Python3.9启动,完全不影响系统其他工具用3.12。
如果你不想改原文件,也可以在自己的用户配置里加个别名:
echo "alias cqlsh='python3.9 /usr/bin/cqlsh'" >> ~/.bashrc source ~/.bashrc
这样你输入cqlsh的时候,系统就会用3.9来运行它,效果一样。
如果你铁了心要全局用Python3.9(真的不推荐!)
要是你实在不想搞单独配置,非要全局用3.9,那一定要做好系统工具的兼容处理,不然下次可能不是终端崩,而是apt直接用不了:
- 先装全Python3.9的组件:
sudo apt install python3.9-full - 用update-alternatives设置优先级,让3.9成为默认:
这里数字是优先级,2比1高,所以默认会用3.9sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2 - 关键!给所有依赖系统Python的工具单独指定3.12:
比如apt、apt-get这些核心工具,你得挨个改它们的开头行:
把第一行的sudo nano /usr/bin/apt#!/usr/bin/python3改成#!/usr/bin/python3.12,同理处理/usr/bin/apt-get、/usr/bin/update-manager这些系统脚本——但这个方法太繁琐了,而且系统更新之后这些修改会被覆盖,到时候又要重新改,真的很麻烦。
最后再啰嗦一句
Ubuntu的系统Python真的是“牵一发而动全身”,我之前全局替换之后,不仅终端崩过,连软件中心都打不开了,折腾了好久才救回来。所以最稳妥的还是保留系统默认版本,给需要旧版本的工具单独指定Python环境,既解决了你的cqlsh问题,又不会搞崩系统。
备注:内容来源于stack exchange,提问作者best_of_man




