2010-09-23 16 views
9

Ho scritto un modulo Pure Python per Python 3.0/3.1 che mi piacerebbe anche renderlo compatibile con 2.x (probabilmente solo 2.6/2.7) al fine di renderlo disponibile al pubblico più vasto possibile.Scrittura di un modulo per Python 2.xe 3.x

Il modulo riguarda la lettura e la scrittura di un set di formati di file correlati, pertanto le differenze tra le versioni 2.xe 3.x potrebbero essere leggermente diverse, ad es. io.BytesIO anziché StringIO.StringIO - ma non tutti sono facilmente gestibili tramite try/tranne i blocchi, come l'impostazione dei metaclassi.

Qual è il modo corretto di gestirlo? Due codebases quasi identici che devono essere mantenuti sincronizzati o un codebase cosparso di funzionalità di rilevamento? Un singolo, pulito codice base più 2to3 o 3to2?

+0

Python's HOWTO [Porting Python 2 Code to Python 3] (http://docs.python.org/py3k/howto/pyporting.html) offre alcuni buoni consigli su questo argomento. –

risposta

11

Scrivi il tuo codice interamente contro 2.x, il targeting della versione più recente nella serie 2.x. In questo caso, probabilmente rimarrà 2.7. Eseguirlo tramite 2to3 e, se non supera tutti i test unitari, correggere la versione 2.x fino a quando la versione 3.x generata non funziona.

Alla fine, quando si desidera eliminare il supporto 2.x, è possibile prendere la versione 3.x generata e iniziare a modificarla direttamente. Fino ad allora, solo modificare la versione 2.x.

Questo è il flusso di lavoro altamente raccomandato dalle persone che hanno lavorato su 2to3. Sfortunatamente non ricordo a memoria il link al documento da cui ho tratto tutto questo.

+0

E non preoccupatevi di Python 3.0.x che è stato immediatamente deprecato al rilascio di 3.1. –

+0

- Se riesci a scavare quel link, mi piacerebbe vederlo. –

Problemi correlati