Python的-、-ip包是什么?无法通过pip正常卸载该如何处理?
异常包性质说明
这类以连字符开头的包不属于正常Python发行包,是执行pip安装命令时输入错误,导致无效内容被错误写入本地包索引生成的异常条目。正常Python包名不允许以连字符作为首字符,这类条目不会实际生效,仅会在调用pip相关命令时抛出警告。
正确卸载方法
直接执行卸载命令失败的原因是pip会默认将命令中以-开头的内容识别为命令选项,而非包名,可通过以下两种方法处理:
方法1:通过
--终止参数解析
在卸载命令中加入--标识,告知pip后续内容均为包名,不会被解析为命令选项,执行命令如下:# 可同时卸载两个异常包,按提示确认即可 pip38 uninstall -- - -ip # 也可单独卸载 # pip38 uninstall -- - # pip38 uninstall -- -ip方法2:手动删除包元数据
若方法1执行失败,可直接删除站点包目录下的对应元数据文件,根据freeze警告给出的路径执行操作:- 进入对应Python版本的站点包目录
cd /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages- 查找名称匹配
-*.dist-info、-*.egg-info格式的目录,一般对应为-p.dist-info、-ip-20.2.3.dist-info,执行删除即可:
rm -rf ./-p.dist-info rm -rf ./-ip-20.2.3.dist-info路径前添加
./是为了避免系统将开头的-识别为命令参数。
操作验证
操作完成后执行pip38 list和pip38 freeze,确认异常包条目和相关警告信息消失即为操作成功。
内容的提问来源于stack exchange,提问作者MACE
相关产品推荐
相关产品推荐

