Ubuntu升级后pip3运行报错NameError: name 'unicode' is not defined
解决方案
根因说明
NameError: name 'unicode' is not defined 报错的核心原因是:Python3运行时错误加载了残留的Python2.7版本模块。unicode是Python2的专属内置类型,Python3中该类型已更名为str,调用Python2路径下的typing模块就会触发该错误。
跨Ubuntu大版本升级时,系统不会自动清理用户本地目录下的Python2站点包,而Python3的模块搜索顺序中~/.local下的用户目录优先级高于系统目录,是该问题的常见诱因。
修复步骤
- 清理用户目录下的Python2残留包
普通用户执行pip报错时,先删除当前用户下的Python2站点包目录:
rm -rf ~/.local/lib/python2.7
如果是用sudo执行pip命令报错,还要删除root用户下的残留目录:
sudo rm -rf /root/.local/lib/python2.7
- 修复pip3指向
如果清理后还是报错,重新安装系统自带的python3-pip,覆盖可能异常的软链:
sudo apt update sudo apt install --reinstall python3-pip
- 补充python3的update-alternatives配置
你之前仅配置了python命令的替代项,没有配置python3的替代项,所以执行sudo update-alternatives --config python3会提示无可选配置,补充配置即可:
首先确认你系统中Python3的实际版本路径,Ubuntu20.04默认是Python3.8:
# 确认路径存在 ls /usr/bin/python3.8 # 添加到update-alternatives配置 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10
配置完成后即可正常执行版本切换命令。
- 验证修复效果
执行以下命令确认功能恢复正常:
# 确认Python3版本正常 python3 --version # 确认pip3指向Python3 pip3 --version # 测试pip升级无报错 python3 -m pip install --upgrade pip
内容的提问来源于stack exchange,提问作者Micha93
相关产品推荐
相关产品推荐

