验证、整理并排序 Python requirements.txt 文件,符合最佳实践并适配 CI。
explocation- checker.Validate, lint, s排序, 并比较 Python 要求.txt 文件..是一项面向实际任务的技能,主要用于Pure stdlib – 不需要外部依赖.;Validate. 请检查格式错误的要求文件, inval。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
用于验证(validate)、检查(lint)、排序(sort)和比较(compare)Python requirements.txt 文件的工具。纯标准库实现 — 无需任何外部依赖。
检查 requirements 文件是否存在格式错误、非法版本说明符、重复条目以及潜在问题模式。
python3 scripts/requirements-checker.py validate requirements.txt # 输出 JSON 格式(适用于自动化流程) python3 scripts/requirements-checker.py validate requirements.txt --format json # 严格模式 — 遇到任何问题均返回退出码 1(适用于 CI 环境) python3 scripts/requirements-checker.py validate requirements.txt --strict
包含全部验证检查项,并额外启用最佳实践规则:未锁定版本的依赖(unpinned deps)、缺少上界约束(missing upper bounds)、VCS 类型依赖(VCS deps)、非字母序排列(non-alphabetical order)、混合使用版本操作符(mixed operator styles)等。
python3 scripts/requirements-checker.py lint requirements.txt # 输出 Markdown 格式(适用于 PR 评论或报告) python3 scripts/requirements-checker.py lint requirements.txt --format markdown # 严格模式 — 警告(warning)也导致退出码为 1 python3 scripts/requirements-checker.py lint requirements.txt --strict # 忽略特定规则 python3 scripts/requirements-checker.py lint requirements.txt --ignore unpinned --ignore no-upper-bound
查找同一包被多次列出的情况(不区分大小写,按 PEP 503 规范化处理)。
python3 scripts/requirements-checker.py duplicates requirements.txt python3 scripts/requirements-checker.py duplicates requirements.txt --format json
按字母顺序对依赖项进行排序。默认输出到 stdout;使用 --write 可就地更新原文件。
# 预览排序后的结果 python3 scripts/requirements-checker.py sort requirements.txt # 就地写入排序后的内容 python3 scripts/requirements-checker.py sort requirements.txt --write
对比两个 requirements 文件 — 显示新增、删除及版本变更的包。
python3 scripts/requirements-checker.py compare requirements.txt requirements-new.txt python3 scripts/requirements-checker.py compare base.txt updated.txt --format markdown
| 选项 | 说明 |
|---|---|
--format text|json|markdown |
输出格式(默认为 text) |
--strict |
遇到任何问题(包括 warning 和 info)均返回退出码 1(CI 模式) |
--ignore RULE |
忽略指定规则;可重复使用 |
| 规则 | 严重程度 | 说明 |
|---|---|---|
invalid-format |
error | 某行不符合 PEP 508 规范 |
invalid-specifier |
error | 使用了未知操作符或无法解析的版本说明符 |
duplicate-package |
error | 同一包名出现多次 |
editable-install |
warning | 在生产环境 requirements 中使用 -e 可编辑安装 |
vcs-dependency |
warning | 使用 git+、hg+、svn+ 或 bzr+ URL 的依赖 |
custom-index-url |
warning | 存在 --index-url 或 --extra-index-url |
url-dependency |
info | 直接 URL 形式的依赖 |
requirement-include |
info | 使用 -r 引入嵌套 requirements 文件 |
trailing-whitespace |
info | 某行末尾存在空格或制表符 |
whitespace-only-line |
info | 某行为纯空白字符 |
missing-final-newline |
info | 文件末尾缺少换行符 |
| 规则 | 严重程度 | 说明 |
|---|---|---|
unpinned |
warning | 依赖未指定版本号 |
no-upper-bound |
warning | 使用 >= 但未配合 < 或 <= 设置上界 |
non-alphabetical |
warning | 包未按字母顺序排列 |
mixed-operators |
info | 文件中混合使用了 ==(精确版本)与 >=(范围版本)等不同操作符 |
File: requirements.txt
[ERROR] line 4 (duplicate-package) Duplicate package 'requests' (first seen on line 2)
requests==2.31.0
[WARNING] line 7 (no-upper-bound) 'django' uses >= without an upper bound
django>=4.0
[WARNING] line 1 (non-alphabetical) 'zope' is out of alphabetical order
zope==5.0
Summary: 3 issue(s) — 1 error(s), 2 warning(s), 0 info(s)
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章