Ubuntu 20.04切换Python3版本引发Netplan异常及APT依赖Python3.8的问题咨询
Ubuntu 20.04切换Python3版本引发Netplan异常及APT依赖Python3.8的问题咨询
嗨,我来帮你梳理这个问题的原因和解决思路哈~
为什么切换到Python3.10后Netplan会报错?
Ubuntu 20.04发行版自带的Netplan工具是基于系统默认的Python3.8开发和测试的,它的内部脚本依赖Python3.8的特定库版本、API或者语法特性。当你通过update-alternatives --config python3把系统默认的python3指向3.10时,Netplan调用的Python环境发生了变化:
- 有些在Python3.8里可用的模块,可能在3.10中被移除、重命名或者修改了API;
- 部分语法兼容性问题也可能导致Netplan的脚本执行失败。
所以切换后Netplan出现异常是很正常的——系统级工具和默认Python版本是强绑定的。
为什么卸载后重装Netplan,Python3.8总会被装回来?
这是APT包管理系统的依赖解析机制导致的:
- Ubuntu 20.04的官方软件源中,Netplan的包依赖明确指定了系统默认的Python3.8(因为发行版发布时Python3.8是官方支持的系统级Python版本);
- 当你尝试安装Netplan时,APT会自动检查所有依赖项,发现缺少Python3.8就会自动把它作为依赖包安装回来,这是为了保证Netplan能在符合要求的环境下正常运行。
推荐的解决办法
- 不要修改系统默认的
python3指向:保留python3指向3.8,给Python3.10单独设置调用方式。比如直接用python3.10命令调用,或者在~/.bashrc里添加别名:
之后重启终端,就能用alias py310='/usr/bin/python3.10'py310来调用Python3.10了。 - 使用虚拟环境隔离Python版本:如果需要在特定项目中使用Python3.10,建议用虚拟环境来隔离,完全不会影响系统级的Python环境:
激活后,当前终端里的# 创建Python3.10的虚拟环境 python3.10 -m venv my_project_env # 激活虚拟环境 source my_project_env/bin/activatepython和pip都会指向虚拟环境里的Python3.10,退出环境只需执行deactivate命令。
备注:内容来源于stack exchange,提问作者定坤宋
相关产品推荐
相关产品推荐

