You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

降级Python版本后终端无法启动,如何全局降级Python至兼容稳定版本?

降级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直接用不了:

  1. 先装全Python3.9的组件:
    sudo apt install python3.9-full
    
  2. 用update-alternatives设置优先级,让3.9成为默认:
    sudo 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
    
    这里数字是优先级,2比1高,所以默认会用3.9
  3. 关键!给所有依赖系统Python的工具单独指定3.12:
    比如aptapt-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

火山引擎 最新活动