误删UNIX环境下Python库求助:usr/lib及usr/local/lib中多版本Python已删除
别慌,这种误删Python库文件的情况很常见,我帮你一步步梳理解决办法——先说说这会带来什么影响,再针对性给你恢复步骤:
误删文件的影响
- 首先,系统里依赖这些Python版本的工具、脚本会直接失效,比如不少系统管理脚本是用Python 2.7或特定3.x版本编写的,现在肯定跑不起来了
- 你之前安装的所有第三方Python包也都没了,因为这些
/usr/local/lib和/usr/lib目录是默认存放包的位置 - 部分系统组件可能也依赖Python,但大概率核心系统功能还能正常运行,不用过度焦虑
恢复步骤
不同UNIX发行版的包管理工具不一样,我分两种主流情况给你说明:
Debian/Ubuntu 系列(用apt包管理器)
重新安装系统自带的Python版本
先通过包管理器把对应版本的Python二进制文件和库文件全部恢复,执行以下命令(需要sudo权限):sudo apt-get install --reinstall python2.7 python2.7-dev python3.5 python3.5-dev python3.6 python3.6-dev这个命令会覆盖修复丢失的系统级Python库文件。
修复损坏的包依赖
有些依赖包可能因为Python文件丢失被标记为损坏,执行下面的命令自动修复:sudo apt-get -f install恢复pip和第三方包支持
重新安装后pip可能也需要修复,分别针对Python2和各个Python3版本:# 恢复Python2的pip sudo apt-get install --reinstall python-pip # 恢复Python3的pip和虚拟环境工具 sudo apt-get install --reinstall python3-pip python3.5-venv python3.6-venv之后你就可以重新用pip安装之前需要的第三方包了。
RHEL/CentOS 系列(用yum/dnf包管理器)
重新安装系统自带的Python版本
用yum或dnf重新安装对应版本的Python包:# CentOS 7及以下用yum sudo yum reinstall python27 python27-devel python35 python35-devel python36 python36-devel # CentOS 8及以上用dnf sudo dnf reinstall python27 python27-devel python35 python35-devel python36 python36-devel修复系统依赖问题
执行以下命令检查并修复可能的依赖损坏:# yum版本 sudo yum check-update && sudo yum upgrade -y # dnf版本 sudo dnf check-update && sudo dnf upgrade -y恢复pip工具
重新安装系统自带的pip包:# yum版本 sudo yum reinstall python2-pip python3-pip # dnf版本 sudo dnf reinstall python2-pip python3-pip
如果你是手动编译安装的Python版本
如果这些Python版本不是通过系统包管理器安装的,而是你自己下载源码编译的,那需要重新下载对应版本的源码,编译安装一遍覆盖回去:
比如以Python3.6为例:
# 下载对应版本的源码包(这里用3.6.15,你可以换成自己之前用的版本) wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz # 解压源码 tar xzf Python-3.6.15.tgz cd Python-3.6.15 # 配置编译参数,注意prefix要和你之前安装的路径一致 # 如果之前装在/usr/local就用这个,装在/usr就改成--prefix=/usr ./configure --prefix=/usr/local # 编译并安装 make && sudo make install
验证恢复结果
完成以上步骤后,你可以用以下命令验证各个Python版本是否恢复正常:
python2.7 --version python3.5 --version python3.6 --version
内容的提问来源于stack exchange,提问作者Spir Zi
相关产品推荐
相关产品推荐

