在 setup.py 中声明我的包的可选组件

use*_*265 5 python distutils setuptools

我已经建立了一个具有以下结构的库:

filters/
  __init__.py

  core/
    __init__.py
    base.py
    complex.py
    number.py
    string.py

  extra/
    __init__.py
    django.py
    iso.py
Run Code Online (Sandbox Code Playgroud)

filters.core当开发人员执行pip install filters.

不过,我想filters.extra成为可选的。默认情况下不会安装;相反,开发人员需要执行类似的操作pip install filters[extra]才能将额外的软件包与核心一起安装。

是否可以使用 setuptools 来做到这一点?

lan*_*tar 4

不,使用 setuptools 的默认方法这是不可能的。您可以选择以下两个选项:

  1. 使用额外的东西创建第二个项目,例如filters-extra。这是许多项目所做的。例如,看看pypi 上的 Flask
  2. 使用setuptools的“可选功能”机制。这将始终安装您的代码,但只有在明确请求时才会安装附加功能的依赖项。

如果额外功能确实与核心功能分离,并且在代码中也没有互连,我通常会选择选项 1,因为它更易于使用和记录。