如何卸载所有用户安装的Python及pip版本并通过版本管理器重装?
嘿,我之前也踩过类似的坑,折腾了好一阵才把用户安装的Python版本清干净,同时保住了系统预装的版本,给你分享一套稳妥的操作步骤:
第一步:区分系统预装和用户自行安装的Python版本
先别急着删,第一步得搞清楚哪些是你自己装的,哪些是系统自带的——毕竟系统好多工具(比如apt)都依赖自带的Python,删错了会直接搞崩系统:
- 查看各个Python版本的路径:运行
which python2.x或者which python3.x(把x换成具体版本号,比如3.11),系统预装的一般在/usr/bin/,但用户自行编译/安装的可能在/usr/local/bin/或者~/.local/bin/ - 验证是否为系统包安装:运行
dpkg -S /usr/bin/python3.x,如果输出是某个系统deb包(比如python3.10-minimal: /usr/bin/python3.10),那就是系统预装的;如果提示dpkg-query: no path found matching pattern /usr/bin/python3.x,那大概率是你自己装的。
第二步:卸载用户安装的Python版本及关联pip
分两种情况处理:
情况1:源码编译安装的Python
如果你是从源码编译安装的:
- 要是还保留着当初编译的源码目录,直接进入该目录运行
sudo make uninstall,这是最干净的卸载方式 - 如果找不到源码目录了,就手动删除对应文件:
- 删除主程序:
sudo rm /usr/bin/python3.x /usr/bin/pip3.x(替换x为版本号) - 删除对应的库文件:
sudo rm -rf /usr/local/lib/python3.x/ - 删除其他关联文件:比如
/usr/local/bin/python3.x这类路径的文件也一并删掉
- 删除主程序:
情况2:通过PPA/第三方deb包安装的Python
如果你是用PPA或者第三方deb包装的:
- 先移除对应的PPA:运行
ls /etc/apt/sources.list.d/找到相关的Python PPA(比如deadsnakes-ubuntu-ppa-*.list),然后运行sudo add-apt-repository --remove ppa:deadsnakes/ppa(替换成你找到的PPA名称) - 卸载对应版本的Python和pip:
sudo apt purge python3.x python3.x-pip,卸载前可以先运行apt-cache depends python3.x确认没有系统关键依赖,避免误删。
第三步:确认系统预装版本正常
卸载完后,一定要验证系统自带的Python还能正常工作:
- 运行
python3 --version和python2 --version看是否能正常输出系统版本 - 运行
dpkg -l | grep python查看系统Python包的状态,确保没有被误卸载 - 测试系统工具比如
sudo apt update,确认能正常运行,避免因为误删Python导致系统崩溃
第四步:用版本管理器安装最新Python版本
推荐用pyenv(你提到的类似工具)来管理多版本Python,操作很方便:
- 先安装依赖包:
sudo apt install make build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git - 克隆pyenv到本地目录:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv - 配置环境变量(根据你的shell选择配置文件,比如bash用
~/.bashrc,zsh用~/.zshrc):
在配置文件末尾添加:export PYENV_ROOT="$HOME/.pyenv" command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" - 重启终端,然后就可以安装最新版本了:
- 安装最新Python2:
pyenv install 2.7.18(这是Python2的最终稳定版) - 安装最新Python3:
pyenv install 3.12.x(替换x为最新小版本号)
- 安装最新Python2:
- 设置全局默认版本:
pyenv global 3.12.x 2.7.18,或者在项目目录下设置局部版本:pyenv local 3.12.x
内容的提问来源于stack exchange,提问作者Indu Pillai
相关产品推荐
相关产品推荐

