pip show不显示包Requires、License字段的配置问题排查
问题根因说明
两个字段显示异常都是配置位置/参数名写错导致的:
依赖项(Requires)为空的原因
- 你在
setup.py里写的requires=["requests"]是无效参数:setuptools 识别运行时依赖的合法参数是install_requires,requires是早年distutils遗留的废弃参数,不会被写入包元数据,pip自然读取不到。 - 你在
pyproject.toml里把requests>=2.27.1写在了[build-system]段的requires列表里,这个列表仅声明构建打包环节需要的依赖,不会被识别为用户安装包时需要拉取的运行时依赖,所以也不会出现在pip show的结果里。
你后续在setup()调用中添加install_requires参数后依赖正常显示,正好验证了这个问题。
- 你在
License字段为空的原因
你把license = "MIT"同样错写在了pyproject.toml的[build-system]段下,这个段仅用于配置构建后端相关参数,根本不会读取包元数据字段,所以pip无法获取到许可证信息。
正确配置方案
你可以二选一配置,推荐优先用标准PEP 621格式的pyproject.toml配置,减少多文件配置不一致的问题:
- 方案1:继续用setup.py配置
直接在setuptools.setup()的调用参数中补充license="MIT"即可,和你之前添加install_requires的方式一致。 - 方案2:用pyproject.toml标准配置(推荐)
把所有包元数据挪到[project]标准段下(该格式遵循PEP 621标准,需要setuptools>=61.0版本支持),[build-system]仅保留构建相关配置,示例:[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "Classeviva.py" version = "0.1.1.post1" license = "MIT" dependencies = [ "requests>=2.27.1" ] # 其余元数据比如作者、项目简介、仓库地址也可以统一写在这个段下
配置完成后重新打包安装,再执行pip show就能看到License字段正常显示MIT了。
内容的提问来源于stack exchange,提问作者FLAK-ZOSO
相关产品推荐
相关产品推荐

