web-dev-qa-db-ja.com

`setup.py`の` setup() `に対する` platforms`引数は何をしますか?

最近いくつかのプロジェクトを調べたところ、platformsの値が1つしかないにもかかわらず、_setup.py_のsetup()any引数を使用しているプロジェクトがあることに気付きました。

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

OR

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

「プラットフォーム」という名前から、この引数が何を意味するのかを推測することができ、リストバリアントが正しい使用法であるように思われます。

だから私はグーグルで調べて setuptools docs を調べましたが、platformsに可能な値と、それがパッケージ内で正確に何をするか/影響するかについての説明を見つけることができませんでした。

それが正確に何をし、どのような価値を受け入れるのかを説明するか、説明へのリンクを提供してください。

P.S.また、OSに依存しないパッケージでさまざまな値を提供し、ホイールを作成するときに何が変わるかを確認しようとしましたが、何も起こらないようです。

18
Nikita

platformsは、setuptoolsパッケージがdistutilsから継承する引数です。 distutilsドキュメントの 追加のメタデータセクション を参照してください。

メタデータplatforms
説明:プラットフォームのリスト
:文字列のリスト

したがって、はい、リストを使用することが正しい構文です。

このフィールドはメタデータを提供するだけです。パッケージはどのプラットフォームを対象としていますか。これを使用して、パッケージが使用される予定の場所についてツールや人々に伝えます。

このリストの内容についてはこれ以上の仕様はありません。構造化されておらず、自由形式です。より構造化されたものを使用する場合は、classifiersフィールドで 使用可能なTrove分類文字列 を使用します。ここで、Operating SystemEnvironmentなどの下のタグはプラットフォームをより厳密に定義します。

ホイールは、authorlicenseなどの他のフィールドと同様に、メタデータに含める以外にこのフィールドを使用しません。

8
Martijn Pieters

興味のある人にもっと情報を提供するための単なるアップデート。

[〜#〜] pep [〜#〜]platformsの正確な説明を見つけました。

したがって、「そのためのPEPがあります!」:

PEP-0345 _setup.py_のsetup()に対するすべての可能な引数をリストしますが、少し古いです。

PEP-0426 および PEP-0459 は、Pythonパッケージのメタデータを記述する新しいバージョンです。

7
Nikita