WSL2 Ubuntu 20.04 LTS下pip全局安装包无法卸载及多Python版本留存咨询
问题解答:WSL2 Ubuntu中无法卸载系统级Python包&多版本Python管理建议
一、为啥pip uninstall卸不掉这些包?
你碰到的报错本质原因很明确:这些预安装包根本不是通过pip装的——它们是Ubuntu系统通过apt包管理器预装的系统依赖,存放在/usr/lib/python3/dist-packages目录下,这个路径属于系统级目录,不在pip的管理范围内。
pip freeze会把Python环境里能找到的所有包都列出来,不管是apt装的还是pip装的,但pip既没有权限,也不应该去碰这些系统包——强行卸载的话,分分钟搞崩Ubuntu的系统工具(比如cloud-init、command-not-found这些都是系统正常运行依赖的包)。
二、关于多Python版本:要不要全留?
Ubuntu 20.04 LTS默认自带的是Python 3.8,你说的4个版本,建议这么处理:
- 系统默认版本必须留:很多核心系统工具(比如
apt、系统脚本)都依赖它,删了直接导致系统瘫痪,别碰。 - 其他版本:如果是你自己手动装的(比如Python 3.9/3.10这类),要是当前没项目在用,可以考虑卸载;如果是用来做特定开发的,那就保留,但一定要用虚拟环境隔离,绝对别往全局环境塞依赖,不然早晚搞混。
三、正确清理/管理Python包的姿势
如果你想清理的是自己后来用pip装的全局包(注意:不是系统预装的那些),可以这么操作:
- 先区分哪些是自己装的,哪些是系统的:
或者看# 只列出通过pip安装的用户级全局包(排除apt装的系统包) pip list --userpip freeze的输出,系统预装的包通常版本号带ubuntu后缀,比如python-apt==2.0.0+ubuntu0.20.4.5,把这些排除掉,剩下的就是你自己装的。 - 卸载自己装的全局包:
把自己装的包整理到my_packages.txt,然后执行:pip uninstall -r my_packages.txt -y - 强烈推荐用虚拟环境:
别再往全局Python环境装项目依赖了,用虚拟环境隔离每个项目才是正道:# 创建虚拟环境 python3 -m venv my_project_env # 激活虚拟环境(zsh下直接跑这个就行) source my_project_env/bin/activate # 此时装的包只会存在这个环境里,和系统全局完全隔离 pip install requests
四、最后总结一下
- 别作死用
pip卸载系统预装的Python包,稳一手,系统崩了哭都来不及; - 系统默认Python必须留,其他版本按需取舍,用虚拟环境隔离开发;
- 只清理自己用
pip装的全局包,别碰系统依赖。
内容的提问来源于stack exchange,提问作者Kunal Tanwar
相关产品推荐
相关产品推荐

