six依赖安装报错:卸载distutils安装的six时触发异常
解决pip卸载distutils安装的six包失败的问题
咱们先拆解下你碰到的问题:
- 执行完
Running setup.py install for anyjson ... done后,pip尝试更新已存在的six 1.4.1版本 - 触发了DEPRECATION警告:卸载由distutils安装的项目(这里是six)已被弃用,未来版本会移除该功能,原因是这类卸载只能完成部分操作
- 最终抛出了卸载six-1.4.1的异常
问题根源
你的six包是通过系统distutils(而非pip)安装的,pip对这类包的卸载支持有限,强行操作容易出错,而且官方已经明确弃用了这种卸载逻辑。
可行解决方案(按优先级排序)
- 跳过six更新(最推荐)
如果你的项目不需要最新版six,直接让pip安装anyjson时忽略已有的six包,执行命令:
pip install anyjson --ignore-installed six
这个命令会告诉pip专注安装anyjson,完全跳过对six的更新或卸载操作。
- 强制覆盖安装新版six(适合需要新版six的场景)
既然pip没法正常卸载distutils安装的six,咱们直接用pip安装新版来覆盖它,执行:
pip install six --upgrade --ignore-installed
操作完成后,six就会变成pip可管理的包,后续更新卸载都不会有问题。
- 手动清理(不推荐,风险较高)
如果上面的方法都不适用,你可以手动找到six的安装目录删除相关文件:
- Python 2.7的场景下,路径一般是
/Library/Python/2.7/site-packages/six* - 删除所有以six开头的文件和文件夹后,再重新安装你需要的版本:
注意:手动删除可能影响依赖six的系统工具,操作前建议备份相关文件。pip install six==你需要的版本号
小贴士:Python 2.7已经停止维护很久了,如果条件允许,建议升级到Python 3.x版本,能避免很多这类兼容性问题哦。
内容的提问来源于stack exchange,提问作者R11G
相关产品推荐
相关产品推荐

