程序化获取自己的pyproject.toml依赖项
我使用一个 pyproject.toml
文件来列出一个包所需要的依赖项:
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "foobar"
version = "1.0"
requires-python = ">=3.8"
dependencies = [
"requests>=2.0",
"numpy",
"tomli;python_version<'3.11'",
]
在这个包内部,有没有办法获取自己依赖项的列表,并以字符串的形式显示出来?在上面的例子中,应该返回
["requests", "numpy"]
如果使用的是 Python 版本大于等于 3.11 的话,另外
["requests", "numpy", "tomli"]
则返回其他内容。
1 个回答
1
下面的内容应该可以解决你的问题:
import importlib.metadata
import packaging.requirements
def _get_dependencies(name):
rd = metadata(name).get_all('Requires-Dist')
deps = []
for req in rd:
req = packaging.requirements.Requirement(req)
if req.marker is not None and not req.marker.evaluate():
continue
deps.append(req.name)
return deps
参考资料: