2016-01-25 12 views
7

kürzlich mehrere Projekte Blick durch, bemerkte ich einige von ihnen verwenden platforms Argument setup() in setup.py, obwohl nur mit einem Wert von any, dhWas bewirkt das `platforms'-Argument zu` setup() `in` setup.py`?

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

ODER

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

Von dem Namen „Plattformen "Ich kann eine Vermutung darüber machen, was dieses Argument bedeutet, und es scheint, dass die Listenvariante die richtige Verwendung ist.

Also googelte ich, schaute durch setuptools docs, aber ich fand keine Erklärung, was sind die möglichen Werte zu platforms und was es tut/betrifft im Paket genau.

Bitte, erklären oder einen Link zur Erklärung dessen, was es genau macht und welche Werte es akzeptiert?

P.S. Habe auch versucht, verschiedene Werte in meinem Betriebssystem-unabhängigen Paket zu liefern und zu sehen, was sich ändert, wenn man Räder erstellt, aber es scheint, dass es nichts tut.

Antwort

3

platforms ist ein Argument das setuptools Paket erbt von distutils; finden Sie in der Additional meta-data section in der distutils Dokumentation:

Meta-Daten: platforms
Beschreibung: eine Liste der Plattformen
Wert: Liste von Strings

Also, ja, Verwenden einer Liste ist die richtige Syntax.

Das Feld liefert nur Metadaten; Auf welche Plattformen zielt das Paket ab? Verwenden Sie dies, um mit Tools oder Personen darüber zu kommunizieren, wo Sie das Paket erwarten.

Es gibt keine weitere Spezifikation für den Inhalt dieser Liste, es ist unstrukturiert und Freiform. Wenn Sie etwas strukturierteres verwenden möchten, verwenden Sie das Feld available Trove classifier strings im Feld classifiers, in dem die Tags unter Operating System, Environment und anderen Sie eine Plattform genauer definieren können.

Räder verwenden dieses Feld nur, um es in die Metadaten aufzunehmen, genau wie andere Felder wie author oder license.

+0

Danke, ich sah das, aber außer dass es eine Liste von Strings gibt es keine weiteren Informationen auf diesem Link. Will Pip dieses Feld betrachten, wenn Sie versuchen, ein Paket zu installieren, sagen wir auf Linux, und "Plattformen" ist auf "Win32" oder etwas? – Nikita

+1

@Nikita: Es gibt wenig mehr darüber zu sagen. Es gibt keine automatisierten Tools, die dieses Feld verwenden. –

+1

Also im Grunde ist es veraltet und hat keinen wirklichen Nutzen? Ich meine, Sie können die gewünschten Plattformen von 'Klassifikatoren' bekommen, wenn Sie das auch tun. – Nikita

3

Nur ein Update, um mehr Informationen für alle Interessierten bereitzustellen.

Ich fand eine genaue Beschreibung von platforms in einem PEP.

Also "Es gibt eine PEP für das":

PEP-0345 listet alle möglichen Argumente setup() in setup.py, aber es ist ein wenig alt.

PEP-0426 und PEP-0459 sind neuere Versionen, die Metadaten für Python-Pakete beschreiben.

Verwandte Themen