2012-12-18 32 views
21

Ho una libreria python. Purtroppo non l'ho ancora aggiornato per funzionare con python 3 ancora.setup.py: limita la versione permessa dell'interprete python

nella sua setup.py, ho aggiunto

install_requires=['python<3'], 

Il mio intento era quello di non permettere che questo pacchetto da installare/utilizzato in Python 3, perché so che non lo fa (ancora) il lavoro. Non penso che questo sia il modo giusto per farlo, perché pip prova quindi a scaricare e installare python 2.7.3 (che è già la versione installata!).

Come si deve specificare la dipendenza della libreria da un particolare intervallo di versioni dell'interprete python? Devo aggiungere un tag Programming Language :: Python :: 2 :: Only? Questo in realtà impedirà l'installazione sotto python 3? Cosa succede se voglio anche limitare la versione minima a Python 2.6?

Preferirei una soluzione che funziona dappertutto, ma accontentarsi di una che funziona solo in pip (e si spera non causa easy_install a soffocare).

+0

risposta qui: http://stackoverflow.com/questions/13385337/distribute-distutils-specify-python-version – shakefu

risposta

10

a partire dal version 9.0.1 pip onorerà una nuova stringa python_requires, specificando la versione di Python richiesto per l'installazione, ad esempio:

setup(
    ..., 
    python_requires=">=3.3" 
) 

Vedere here per ulteriori dettagli. Vedi anche questo answer su SO.

15

una possibile soluzione è quella di prova per la versione di Python, dato PIP non può soddisfare la versione di Python ad eccezione della versione è attualmente in esecuzione in (si installa in un ambiente python corrente):

import sys 
if not sys.version_info[0] == 2: 
    sys.exit("Sorry, Python 3 is not supported (yet)") 

setup(... 
+2

vero, che avrebbe funzionato. Sarebbe molto più bello avere qualcosa incorporato nelle dipendenze, in modo tale che pip sapesse in anticipo di non preoccuparsi di scaricare ed eseguire il programma di installazione. – gfxmonk

+0

Perché non entrambi? La tua risposta è ciò che non dovresti * fare *, ma piuttosto fare affidamento sulle funzionalità incorporate, sebbene usare questa risposta * in aggiunta * al 'python_requires' sarebbe fantastico! Potresti aggiornarlo? – Mayou36

Problemi correlati