2016-01-25 38 views
7

Guardando attraverso diversi progetti di recente, ho notato alcuni di loro usano platforms argomento per setup() in setup.py, anche se con un solo valore di any, cioèChe cosa fa l'argomento `platforms` su` setup() `in` setup.py`?

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

O

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

Dal nome piattaforme" ", Posso fare un'ipotesi su cosa significhi questo argomento, e sembra che la variante di lista sia il giusto uso.

Così ho cercato su google, ho guardato attraverso setuptools docs, ma non sono riuscito a trovare alcuna spiegazione su quali sono i valori possibili su platforms e su cosa fa/influenza esattamente nel pacchetto.

Per favore, spiegare o fornire un collegamento alla spiegazione di cosa fa esattamente e quali valori accetta?

P.S. Ho anche provato a fornire valori diversi nel mio pacchetto indipendente dal sistema operativo e vedere quali modifiche, quando si creano le ruote, sembra non fare nulla.

risposta

3

platforms è un argomento che il pacchetto setuptools eredita da distutils; vedere la Additional meta-data section nella documentazione distutils:

Meta-dati: platforms
Descrizione: un elenco delle piattaforme
Valore: lista di stringhe

Quindi, sì, usare una lista è la sintassi corretta.

Il campo fornisce solo i metadati; quali piattaforme è il target del pacchetto. Usalo per comunicare con strumenti o persone su dove ti aspetti che il pacchetto sia usato.

Non ci sono ulteriori specifiche per il contenuto di questo elenco, non è strutturato e in forma libera. Se si desidera utilizzare qualcosa di più strutturato, utilizzare available Trove classifier strings nel campo classifiers, dove i tag sotto Operating System, Environment e altri consentono di definire in modo più preciso una piattaforma.

Le ruote non utilizzano questo campo se non per includerlo nei metadati, proprio come altri campi come author o license.

+0

Grazie, l'ho visto, ma a parte il fatto che si tratta di un elenco di stringhe non ci sono più informazioni su questo link. La pip prenderà in considerazione questo campo quando proverai a installare qualche pacchetto, ad esempio su linux, e 'platforms' è impostato su' win32' o qualcosa del genere? – Nikita

+1

@Nikita: c'è poco altro da dire al riguardo. Non ci sono strumenti automatici che utilizzano questo campo. –

+1

Quindi in pratica è obsoleto e non ha un reale utilizzo? Voglio dire, puoi ottenere le piattaforme previste da "classificatori" se ne hai anche tu. – Nikita

3

Solo un aggiornamento per fornire ulteriori informazioni per chiunque sia interessato.

Ho trovato una descrizione accurata di platforms in un PEP.

Quindi, "C'è un PEP per questo!":

PEP-0345 elenca tutti i possibili argomenti per setup() in setup.py, ma è un po 'vecchio.

PEP-0426 e PEP-0459 sono versioni più recenti che descrivono i metadati per i pacchetti Python.