liccheck依赖检查失败:版本规范存在括号匹配错误
解决方案:liccheck无法解析Poetry导出的复杂Django依赖约束
问题根源
liccheck依赖的pkg_resources.extern.packaging组件版本老旧,不支持PEP 508规范中的||逻辑或版本约束语法,而Poetry导出requirements.txt时会保留共用类库中定义的宽松Django依赖规则,从而触发解析错误。
可行解决办法
办法一:手动修正导出的requirements.txt文件
因为你的项目实际依赖的是固定版本django=4.1.13,直接修改requirements.txt中的django行:
django==4.1.13
修改完成后再执行liccheck -r requirements.txt即可正常运行。
办法二:让Poetry导出锁定后的精确版本
Poetry的poetry.lock文件已经记录了项目实际使用的所有依赖精确版本,导出时指定导出锁定版本而非原始约束:
poetry export --without-hashes --only main -f requirements.txt > requirements.txt
这样导出的requirements.txt里会直接写入django==4.1.13,完全规避复杂约束的解析问题。
办法三:替换liccheck的依赖解析组件(进阶)
如果需要长期解决这个问题,可以修改liccheck的依赖配置,将其使用的packaging库升级到支持PEP 508复杂约束的版本,但需要手动修改liccheck的安装依赖,操作相对繁琐,仅推荐有Python包管理经验的用户尝试。
内容的提问来源于stack exchange,提问作者kostia
相关产品推荐
相关产品推荐

