`setup.py` 中 `setup()` 的 `platforms` 参数有什么作用?

What does the `platforms` argument to `setup()` in `setup.py` do?

最近浏览了几个项目,我注意到其中一些在 setup.py 中对 setup() 使用了 platforms 参数,尽管只有一个 any 的值,即

#setup.py file in project's package folder 
...   
setup(
      ...,
      platforms=['any'],
      ...
)

#setup.py file in project's package folder
...  
setup(
      ...,
      platforms='any',
      ...
)

从名字"platforms"可以猜到这个参数是什么意思,看来list变体是正确的用法。

所以我用谷歌搜索,浏览了 setuptools docs,但我没有找到任何解释 platforms 的可能值是什么以及它 does/affects 在包中到底是什么。

请解释或提供一个 link 来解释它到底做了什么以及它接受什么值?

P.S。还尝试在我的 OS 独立包中为其提供不同的值,并查看在创建轮子时发生了什么变化,但它似乎什么也没做。

platformssetuptools 包继承自 distutils 的参数;请参阅 distutils 文档中的 Additional meta-data section

Meta-Data: platforms
Description: a list of platforms
Value: list of strings

所以,是的,使用列表是正确的语法。

该字段仅提供元数据;包的目标平台是什么。使用它来与工具或人员交流您希望包的使用位置。

此列表的内容没有进一步说明,它是非结构化的 free-form。如果您想使用更结构化的内容,请在 classifiers 字段中使用 available Trove classifier strings,其中 Operating SystemEnvironment 和其他标签下的标签可让您更严格地定义平台。

除了将其包含在元数据中外,Wheels 不使用此字段,就像 authorlicense.

等其他字段一样

只是为感兴趣的人提供更多信息的更新。

我在 PEP 中找到了对 platforms 的准确描述。

所以,“有一个 PEP!”:

PEP-0345 列出了 setup.pysetup() 的所有可能的参数,但是有点老了。

PEP-0426 and PEP-0459 是描述 Python 包元数据的较新版本。