Python 如何根据我希望使用的额外需求更改清单?

Python 如何根据我希望使用的额外需求更改清单?,python,pip,setuptools,Python,Pip,Setuptools,我的问题是,我正在处理的项目附带了复制其结果所需的所有培训数据。我希望默认安装(pip安装包)包含所有这些内容,但不希望特定安装(pip安装包[仅限火车])包含这些内容 我想要瘦身的两种方法是: 为默认和仅列车版本提供不同的清单,其中默认清单更具包容性,以及 每个安装都需要不同的安装,默认情况下更具包容性 我知道如何使用extra\u requires安装extra东西,但如何安装较少的东西?发行版[extras]语法仅用于指定可选功能的其他依赖项,这通常意味着收集其他发行版进行安装。您不能使用

我的问题是,我正在处理的项目附带了复制其结果所需的所有培训数据。我希望默认安装(
pip安装包
)包含所有这些内容,但不希望特定安装(
pip安装包[仅限火车]
)包含这些内容

我想要瘦身的两种方法是:

  • 为默认和仅列车版本提供不同的清单,其中默认清单更具包容性,以及

  • 每个安装都需要不同的安装,默认情况下更具包容性


  • 我知道如何使用
    extra\u requires
    安装extra东西,但如何安装较少的东西?

    发行版[extras]
    语法仅用于指定可选功能的其他依赖项,这通常意味着收集其他发行版进行安装。您不能使用此功能以任何方式控制包数据

    distutils和setuptools中不支持有条件的
    MANIFEST.in
    和/或包数据。最好的选择是为自定义安装后脚本创建挂钩

    如果你愿意考虑换一个“附加”的额外数据的安装模型,你有一个更好的选项:

    pip install mypackage           # to install without extra training data stuff
    pip install mypackage[mystuff]  # to install with extra training data stuff
    

    然后,您将创建一个单独的发行版
    mystuff
    ,其中将包含所需的所有培训数据。

    [extras]语法用于包含额外的内容。我不认为你可以用它来减去东西。这很不幸,但有道理。有没有办法做有条件的修指甲师?另外,相关:是否有方法从setup.py内部访问括号中的内容?我可以在不同的情况下运行不同的设置功能。也许这个问题可以帮助您: