2015-07-22 11 views
6

Dal seguente file setup.py, sto provando a creare una ruota puro-pitone da un progetto che dovrebbe contenere solo il codice python 2.7.Come creare una ruota Pure-Python

from setuptools import setup 

setup(
    name='foo', 
    version='0.0.1', 
    description='', 
    url='', 
    install_requires=[ 
     'bpython', 
     'Django==1.8.2', 
    ], 
) 

Tuttavia, quando si esegue il file python setup.py bdist_wheel ruota che viene generato è specifico di file foo-0.0.1-cp27-none-macosx_10_9_x86_64.whl ruota piattaforma invece dei previsti foo-0.0.1-cp27-none-any.whl. Quando provo a installare questa ruota su una piattaforma diversa, non funziona dicendo it is not compatible with this Python.

C'è qualcosa che devo cambiare sul file setup.py o sull'interprete python, forse, che permetterà a questa ruota di essere usata su qualsiasi piattaforma?

risposta

1

L'aggiunta del campo di classificazione al mio setup.py ha risolto il problema.

from setuptools import setup 

setup(
    name='foo', 
    version='0.0.1', 
    description='', 
    url='', 
    classifiers=[ 
     'Programming Language :: Python :: 2.7', 
    ], 
    install_requires=[ 
     'bpython', 
     'Django==1.8.2', 
    ], 
) 
5

Il modo più semplice è quello di aggiungere --universal al vostro comando, come si può vedere l'esecuzione python setup.py bdist_wheel --help:

--universal  make a universal wheel (default: false) 

In alternativa è possibile aggiungere un file setup.cfg accanto al tuo setup.py che si occupa di questo:

[bdist_wheel] 
universal = 1 

Se non ti piace ancora un altro file di configurazione che copre il pacchetto, puoi semplicemente scrivere un file di questo tipo nel tuo setup.py appena prima di chiamare setup() e quindi rimuoverlo dopo che la chiamata è tornata, questo è quello che faccio nel condiviso setup.py per tutti i miei progetti su PyPI, ad es. utilizzato in ruamel.yaml.

+1

Questa dovrebbe essere la soluzione accettata –