我知道可以用extra-require
在setup.py中定义可选的依赖项。现在,我问自己是否有可能将包也标记为可选包,从而可以选择要安装的子包?有没有一种方法可以将可选依赖项映射到可选包。
例如,如果我有一个名为Project A的项目,并且此包结构为:
Project
--subPackage 1
--subPackage 2
--subPackage 3
我想将子软件包2和3标记为可选,以便默认情况下不安装这些软件包。但是,如果子包是由项目B通过pip或要求指定的,则应与依赖项一起安装。
因此,项目B的预期行为应为:
项目B的setup.py:
setup(
name='Project B',
version='0.0.0',
install_requires=["ProjectA"])
仅导致安装了带有子软件包1的Project 1。但是,如果我将install_requires
行更改为install_requires=["ProjectA[Subpackage2]"]
。项目A随子软件包1和2一起安装,并具有子软件包1和2的给定要求。
这里有一个可用来创建setup.py的项目A的工具,用于存档此行为?