Ubuntu20.04升级后执行certbot命令提示No module named 'pkg_resources'如何解决
故障根因
Ubuntu 20.04升级后默认Python版本发生变更,你之前安装的certbot绑定了旧版本Python的依赖路径,即使你新装了Python3.8和setuptools,旧certbot仍然会尝试调用已被卸载的旧版本Python对应的pkg_resources模块,所以触发报错。
修复步骤
以下两种方案二选一即可:
方案1:使用snap安装(推荐,无Python依赖冲突)
- 先彻底清理旧版本certbot残留
sudo apt purge -y certbot* python3-certbot* sudo pip3 uninstall -y certbot sudo pip uninstall -y certbot sudo rm -rf /usr/local/bin/certbot /usr/bin/certbot
- 升级snapd到最新版本
sudo snap install core; sudo snap refresh core - 安装certbot
sudo snap install --classic certbot - 配置全局命令软链
sudo ln -s /snap/bin/certbot /usr/bin/certbot - 验证修复
执行certbot -v,正常输出版本信息即修复完成。
方案2:使用Python虚拟环境安装(适合不想用snap的场景)
- 完成上述旧版本certbot清理步骤后,执行以下操作
- 创建独立虚拟环境存放certbot
sudo python3 -m venv /opt/certbot/ - 升级虚拟环境内的基础依赖
sudo /opt/certbot/bin/pip install --upgrade pip setuptools - 安装certbot
sudo /opt/certbot/bin/pip install certbot - 配置全局命令软链
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot - 验证修复
执行certbot -v,正常输出版本信息即修复完成。
内容的提问来源于stack exchange,提问作者Henri
相关产品推荐
相关产品推荐

