You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pkg_resources.working_set出现以'-'开头的包,求成因及清理方案

关于Python中以'-'开头的异常条目及cffi升级报错的疑问

我来帮你拆解这两个问题:

那些以'-'开头的"条目"是什么?

这些看起来奇怪的['-fi', '-', '-.fi', '-ffi']并不是真正的Python包,它们是pkg_resources工作集缓存里的异常残留条目。这类情况通常出现在pip处理带编译扩展的包(比如cffi,它会生成_cffi_backend.pyd这类二进制扩展文件)时,因为外部干扰(比如你提到的杀毒软件)导致安装/升级流程中断,使得pkg_resources没有正确更新它的包索引缓存,留下了这些残缺的、格式异常的条目。

异常条目和cffi升级报错的关联?

没错,这些异常条目就是你升级cffi时那个权限报错导致的。当pip尝试升级cffi时,需要先卸载旧版本的_cffi_backend.pyd文件,但杀毒软件拦截了这个删除操作(WinError 5是权限被拒绝)——虽然最终cffi的新版本还是安装成功了,但这个中断的卸载流程让pkg_resources的工作集缓存出现了混乱,生成了这些奇怪的开头为'-'的条目。

如何清理这些异常条目?

你可以按照以下步骤来修复:

  • 清理pip缓存:运行下面的命令删除pip的临时缓存文件,避免残留的安装文件干扰:
    pip cache purge
    
  • 重置pkg_resources缓存:因为pkg_resources是setuptools的一部分,升级setuptools会自动重置它的包索引缓存:
    python -m pip install --upgrade setuptools
    
  • 验证结果:重新运行你原来的代码,检查这些异常条目是否消失:
    import pkg_resources
    print([d.key for d in pkg_resources.working_set if d.key[0] == "-"])
    

如果还是存在,可以尝试手动删除Python环境下的__pycache__文件夹,或者重启你的Python解释器,确保缓存完全刷新。

另外,关于cffi升级的报错,既然你无法禁用杀毒软件,以后可以加上--user参数来安装,这样会把包安装到当前用户的目录下,不需要系统级权限,能避免大部分权限相关的报错:

pip install --upgrade --user cffi

内容的提问来源于stack exchange,提问作者lucatrv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:32:37