使用Poetry时deptry误报redis为未使用依赖的解决咨询
解决Deptry误报Redis未使用的问题
问题场景
你用Poetry 1.7.0管理项目,pyproject.toml里给dogpile-cache配置了redis extras,同时显式声明了redis依赖。但执行deptry .时,工具误报redis未被使用——你代码里确实没直接导入redis,但它是dogpile-cache[redis]运行必需的依赖,移除显式声明后项目直接无法正常运行。而且你清楚Poetry extras是用来定义项目可选扩展功能的,不想滥用它来处理这类必需依赖。
两种解决办法
办法1:修改Deptry配置,屏蔽误报
在项目根目录创建或编辑.deptry.toml文件,添加以下配置,让Deptry跳过对redis的未使用依赖检测:
[tool.deptry] ignore_unused = ["redis"]
这个方案既能保留必需的显式依赖,又能快速解决误报问题,适合不想调整依赖声明结构的场景。
办法2:调整Poetry依赖声明(更贴合规范的尝试)
理论上dogpile-cache的redis extras应该已经内置了对redis的依赖声明(可通过查看其PyPI页面的依赖信息确认),如果确实如此,你可以尝试移除显式的redis依赖,只保留:
dogpile-cache = {extras = ["redis"], version = "^1.2.2"}
但你提到移除显式依赖后项目无法运行,说明dogpile-cache的extras依赖声明存在问题,这种情况下还是得保留显式的redis依赖,再通过办法1解决Deptry的误报。
总结
优先选择办法1,因为你的场景中redis是项目运行必需的隐式依赖,不属于可选扩展范畴,完全没必要用Poetry extras来处理。修改Deptry配置是最直接且符合你需求的解决方案。
内容的提问来源于stack exchange,提问作者SBH
相关产品推荐
相关产品推荐

