gpt4 book ai didi

python - distutils 可以在不安装的情况下执行依赖性检查吗?

转载 作者:太空狗 更新时间:2023-10-30 02:13:29 24 4
gpt4 key购买 nike

是否可以让 distutils 只运行 python 模块依赖性分析(并可能安装丢失的模块)而不实际安装有问题的 python 模块?我想象一个命令如下:

./setup.py check-dependencies

这将报告目标系统上是否缺少任何依赖模块。

最佳答案

Python 打包中的依赖关系是一个令人困惑的主题。长期以来,唯一的标准是 PEP 314,它为 distutils.core 定义了 requiresprovidesobsolets 参数.setup 功能。用于这些参数的元素是 Python 模块名称,例如 provides=['xml', 'xml.utils']。 PEP 对标准库的依赖关系不是很清楚(我必须依赖 Python >= 2.5 还是必须要求 'xml'?)结果是,没有工具可以使用了这些字段(甚至不是 distutils 本身)。

然后是设置工具。它引入了其他类型的依赖项,这些依赖项使用项目 名称而不是模块,因此例如您可以使用setup(..., install_requires=['PyXML', 'Pylons'], tests_require=['nose']),这非常有用:人们使用唯一的项目名称在 PyPI 上发布软件,您可以在安装脚本中使用这些相同的名称来依赖它们,使用 easy_install 或 pip,您可以安装这些依赖项、模块、脚本等等。

当 distutils 的控制权在几年前再次被接管时,社区将 setuptools 的一些依赖关系的想法标准化以产生 PEP 345,现在在 distutils2 中实现,旨在取代 distutils 和 setuptools。

总结一下:- 你可能在你的设置脚本中有 distutils 风格的模块级依赖,这是无用的- 你可能有 setuptools 风格的项目级 deps,它们被基于 setuptools 的工具使用- 你可以在 setup.cfg 文件中包含符合 PEP 345 的项目级 deps,distutils2 使用它

因此,要让我们回答您的问题,您需要告诉我们您拥有哪种类型。对于所有实际问题,不应使用 distutils 样式的模块 deps,因此它留下了 setuptools 项目 deps 或新的 PEP 345 样式的,它们仍然是新的且尚未广泛使用。 distutils2 有一个用于设置工具的兼容层,因此可以使用它从基于设置工具的 setup.py 脚本中获取您想要的信息。

与打包工具无关,还有一个工具可以扫描你的代码找到你正在使用的模块:它是modulefinder模块,在标准库中,它不是很为人所知或使用,从悲伤的状态来看它的代码。此工具不会告诉您使用的模块是来自标准库还是第三方项目,也不会告诉您要在 setup.py 中使用的项目名称setup.cfg 文件。

HTH

关于python - distutils 可以在不安装的情况下执行依赖性检查吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com