【问题标题】:Optional dependencies in distutils / pipdistutils / pip 中的可选依赖项
【发布时间】:2011-09-08 10:32:12
【问题描述】:

在安装我的 python 包时,我希望能够告诉用户各种可选依赖项。理想情况下,我还想打印一条消息,说明这些可选要求以及它们各自的作用。

我还没有在 pip 或 docutils 的文档中看到任何内容。这些工具是否支持可选依赖项?

【问题讨论】:

  • 如果它们是可选的,它们就不是严格依赖,是吗?
  • 我称它们为可选依赖项,因为 ubuntu 的包管理器就是这样称呼它们的。它们不是严格要求的,但如果安装了它们,程序就可以使用它们。
  • 不是 3664478 的副本,另一个提问者明确想要 pip-requirements,这不是一种非常自然的处理方式。

标签: python distutils pip


【解决方案1】:

这些被称为附加功能,here is how to use them in your setup.py

基础支持在 pkg_resources 中。您需要在您的setup.py 中启用分发。 pip 也会理解它们:

pip install 'package[extras]'

【讨论】:

  • 是否有一种标准化的方式来查看哪些附加功能可用?
  • @Sean1708 不,pip 今天没有这样的功能。一种解决方法是检查源代码的setup.py 文件是否有额外内容。另一种方法是检查已安装软件包的 <package name>-<version>.dist-info/metadata.jsonsite-packages 中的“附加”键(或安装软件包的任何位置)。
【解决方案2】:

是的,@Tobu 声明并解释了here。在您的 setup.py 文件中,您可以添加如下一行:

extras_require = {
        'full': ['matplotlib', 'tensorflow', 'numpy', 'tikzplotlib']
    }

我有这行的一个例子here

现在您可以通过 PIP 基本/香草包(如 pip install package_name)或具有所有可选依赖项的包(如 pip install package_name[full])安装

package_name 是您的包的名称,full 是因为我们在 extras_require 字典中输入了“完整”,但这取决于您输入的名称。


如果有人对如何编写可以使用或不使用包的库感兴趣,我推荐this answer

【讨论】:

    猜你喜欢
    • 2011-04-09
    • 2016-08-21
    • 2012-04-05
    • 2023-04-03
    • 2021-07-13
    • 2015-11-15
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    相关资源
    最近更新 更多