Ubuntu系统下Python 3.12环境启动cqlsh报错且无法降级Python至3.11的解决方案咨询
Ubuntu系统下Python 3.12环境启动cqlsh报错且无法降级Python至3.11的解决方案咨询
先理清楚你的核心困扰:因为需要定期本地做Cassandra的增量备份,所以排除了虚拟机和Docker方案;但当前Ubuntu系统装了Python3.12,想降级到3.11却遇到依赖问题,改软链接也没用,启动cqlsh时提示"No appropriate Python interpreter found.",不想重装系统,想找更简便的替代方案。
给你几个不用动全局Python版本的可行思路:
用Python虚拟环境隔离版本
不用降级系统全局Python,直接给Cassandra单独配个Python3.11的环境:- 先并行安装Python3.11(系统可以同时存在多个Python版本):
sudo apt install python3.11 python3.11-venv - 在任意目录创建专属虚拟环境:
python3.11 -m venv ~/cassandra-venv - 激活这个虚拟环境:
source ~/cassandra-venv/bin/activate - 激活环境后,直接运行Cassandra自带的cqlsh脚本就行,比如:
cd /apache-cassandra-4.1.5/bin && ./cqlsh
每次需要用cqlsh时,先激活这个虚拟环境就好,完全不影响系统全局的Python3.12。
- 先并行安装Python3.11(系统可以同时存在多个Python版本):
直接修改cqlsh的脚本指定Python版本
Cassandra自带的cqlsh是个Python脚本,你可以直接修改它的运行指定版本:- 找到cqlsh的路径,比如你这里是
/apache-cassandra-4.1.5/bin/cqlsh,用编辑器打开它:sudo nano /apache-cassandra-4.1.5/bin/cqlsh - 把第一行的
#!/usr/bin/env python3改成#!/usr/bin/env python3.11 - 保存退出后,直接运行
./cqlsh就会自动调用Python3.11了
注意:如果系统还没装Python3.11,先执行sudo apt install python3.11,如果安装时依赖报错,可以试试sudo apt install python3.11 --fix-missing修复依赖。
- 找到cqlsh的路径,比如你这里是
用aptitude解决Python3.11的依赖问题
如果你确实想给系统装Python3.11作为可选版本,遇到依赖问题时可以用aptitude工具,它比apt更灵活:- 先安装aptitude:
sudo apt install aptitude - 然后用aptitude安装Python3.11:
sudo aptitude install python3.11
过程中它会给出几个依赖解决的选项,你可以选择保留部分兼容包的方案,不用强制卸载Python3.12。
- 先安装aptitude:
这些方案都不用重装系统,应该能解决你的cqlsh启动问题,同时也不影响你本地备份Cassandra的需求。
备注:内容来源于stack exchange,提问作者Lookits rswish




