setup.py 中的 extras_require() 和 install_requires() 有什么区别?

新手上路,请多包涵

我试图了解 setup.py 中 extras_require()install_requires() 之间的区别,但一直无法获得它。两者都是用来安装Python依赖的,它们有什么区别呢?

原文由 Harish R 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

根据 setuptools 文档

extras_require

将“extras”(项目的可选功能)名称映射到字符串或字符串列表的字典,指定必须安装哪些其他发行版才能支持这些功能。

install_requires

一个字符串或字符串列表,指定在安装此发行版时需要安装哪些其他发行版。

声明“Extras”(具有自己的依赖项的可选功能) 部分详细说明了这一点:

有时,项目具有“推荐”依赖项,并非项目的所有用途都需要这些依赖项。例如,如果安装了 ReportLab,项目可能会提供可选的 PDF 输出,如果安装了 docutils,则项目可能会提供 reStructuredText 支持。这些可选功能称为“附加功能”,setuptools 还允许您定义它们的要求。这样,需要这些可选功能的其他项目可以强制安装附加要求,方法是在其 install_requires 中命名所需的额外功能。

最大的区别在于 extras_require 中的要求只在需要时安装:

这些要求不会自动安装,除非另一个包依赖于它们(直接或间接地)通过在相关项目名称后的方括号中包含所需的“额外”。 (或者如果附加功能列在 EasyInstall 命令行的需求规范中。)

所以总结一下:

  • 如果依赖项是运行项目所 必需 的,请将其放入 install_requires 。它们将始终被安装。
  • 如果您的项目具有添加依赖项的 可选功能,请将这些依赖项放在 extras_require 中。除非用户或其他软件包调用该功能,否则 不会 安装这些依赖项。

原文由 user812786 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏