开发者工具

requirements.txt解析与依赖整理

检查依赖声明及其条件,按来源组导出结果,保留原始文件内容。

requirements.txt

依赖文件输入

选中组的依赖结果

文本仅在浏览器内处理,不查询软件包、不访问 URL,也不上传。

格式与提取范围

在 pyproject.toml 中,仅提取 project.dependencies、project.optional-dependencies 和 build-system.requires,其他依赖表不提取。

100 KiB UTF-8 · 最多 1000 条依赖 · 每条最多 4096 字符 · 不执行环境标记。

输入或参数已变更,请重新解析后导出。

合并分支后的依赖文件常有重复行,但同名包不一定是重复项。版本范围、extras 和环境标记都可能不同,先拆开查看,才知道哪些声明可以删除。

requirements.txt 记录安装器要读取的声明,pyproject.toml 还包含项目元数据和构建配置。本页帮助核对其中的 Python 依赖,不启动安装环境。

为什么用这里检查 requirements.txt

条件与来源组都随声明保留。

不要丢掉平台条件

结果将包名、extras、版本约束、URL 和环境标记分开显示,同时保留完整声明。浏览器运行在哪个平台,不会影响哪些依赖被保留。

一条依赖声明拆成多个字段,条件标签仍与原声明相连

重复项有依据地删除

整理 requirements.txt 前,先看预览中的移除数和排序影响数。同名而约束不同的行会保留;TOML 中的运行、可选和构建依赖需要分别选组。

两张相同的依赖卡片合成一张,条件不同的卡片继续保留

导出之前先确认三件事

01

格式切换不会替换输入

先选文件格式,再载入对应示例。示例和清空都会先展示替换预览,应用后保留一次撤销,可恢复之前的输入和输出。

02

空的运行依赖组也有意义

默认查看 project.dependencies。即使它为空,也不会偷偷改选构建依赖;可选组和 build-system.requires 要由你明确选择。

03

观察结果是否仍然有效

自动解析在停止编辑 350 ms 后执行。关闭后使用按钮或 Ctrl/Cmd + Enter;输入或参数发生变化时,复制和下载会立即禁用。

把依赖拆成可核对的字段

结构化核对声明

JSON 包含原始包名、规范化名称、extras、版本约束、环境标记、具名直接引用和来源位置。这里只检查版本写法,不判断某个候选版本是否满足范围。

语法错误可回到原文

完整文档先通过 TOML 1.0 语法解析。支持的依赖字段必须是字符串数组;错误依赖定位到对应字符串,其他工具配置表不做各自的 schema 校验。

导出完整的当前组

JSON 保留组名和字段,TXT 每行一条声明。屏幕每次增加 50 条记录;复制和下载包含整个已确认的组,不受当前展示数量影响。

支持的语法与实际边界

解析成功不等于能够安装
不查询 PyPI、不安装软件包、不解算间接依赖,不修复版本冲突,也不生成漏洞或许可证报告。语法合法无法证明目标环境的依赖能同时满足。
只支持具名声明子集
每行输入一条 PEP 508 依赖。忽略空行和 pip 风格注释;拒绝 -r、-c、-e、索引参数、hash 参数、裸路径、续行和环境变量展开,不会悄悄跳过它们。
环境标记只检查不执行
支持常用变量、extra、比较、括号及 and/or。锁文件专用的 extras 与 dependency_groups 变量不支持。具名 URL 保留为普通文本,不访问链接,也不据浏览器环境删依赖。
提取标准字段而非验证整个项目
只提取 project.dependencies、project.optional-dependencies 和 build-system.requires。动态依赖会报错;Poetry 私有表和 dependency-groups 不提取。可选组名限小写字母、数字及单个连字符。
整理不回写原文件
按规范化包名及原始声明排序,仅删除同组中 trim 后完整文本相同的声明。原文的注释和格式保留在输入区,导出不包含注释;重新解析会恢复未经整理的派生结果。
超限或错误时整批阻断
输入最多 100 KiB UTF-8 字节、1000 条依赖,每条声明最多 4096 个字符,标记括号最多嵌套 32 层。支持字段中任一错误都会阻止整个文档导出,不提供看似完整的部分结果。

requirements.txt 常见问题

可以在 pip 的 requirements 文件中添加注释吗?

可以。以 # 开头的行是注释,空白后接 # 会开始行内注释。本工具遵循该规则;URL 中没有前置空白的 # 片段仍属于 URL。注释保留在输入中,不进入提取后的依赖列表。

requirements.txt 能根据 Python 版本指定依赖吗?

可以,例如 importlib-metadata; python_version < "3.10"。本工具检查并保留条件,最终是否安装由目标 Python 环境中的安装器决定,不由浏览器平台决定。

使用 pyproject.toml 后还需要 requirements.txt 吗?

取决于工作流。pyproject.toml 可以声明项目依赖,安装器仍可使用单独的依赖清单或环境导出文件。本工具只提取选中的标准依赖组,不生成求解后的锁文件,也不替代完整构建配置。

requirements.txt 可以允许不同版本吗?

可以用 package>=1,<2 表示范围,也可以用不同环境标记区分声明。整理时保留不同约束;同一包写多行并不自动表示“任选其一”,这些条件仍可能互相冲突。

如何解决软件包版本冲突?

需要结合目标环境和包管理器检查相互矛盾的约束。本页能展示重复声明及条件,但不会求出可安装的版本组合。删除完全重复的文本也不能解决不同约束之间的冲突。

版本结果不符合预期?

检查当前选中的依赖组

返回 requirements.txt 解析区,检查目标依赖组的条件和整理结果,再用于下一步操作。