2010-09-23 14 views
9

Napisałem czysty moduł Pythona dla Pythona 3.0/3.1, który chciałbym również uczynić kompatybilnym z 2.x (prawdopodobnie tylko 2.6/2.7), aby udostępnić ją jak najszerszemu gronu odbiorców.Pisanie modułu dla Pythona 2.x i 3.x

Moduł zajmuje się odczytywaniem i zapisywaniem zestawu powiązanych formatów plików, więc różnice między wersjami 2.x i 3.x byłyby niewielkie - np. io.BytesIO zamiast StringIO.StringIO - ale nie wszystkie z nich można łatwo obsługiwać za pomocą bloków try/except, takich jak ustawianie metaclasses.

Jaki jest prawidłowy sposób obsługi tego? Dwie prawie identyczne bazy kodów, które muszą być zsynchronizowane lub jedna baza kodów rozproszona z wykrywaniem cech? Pojedyncza, czysta baza kodów plus 2to3 lub 3to2?

+0

Python's HOWTO [Przeniesienie kodu Pythona 2 do Pythona 3] (http://docs.python.org/py3k/howto/pyporting.html) daje kilka dobrych rad na ten temat. –

Odpowiedz

11

Napisz swój kod całkowicie przeciwko 2.x, kierując go do najnowszej wersji z serii 2.x. W tym przypadku prawdopodobnie pozostanie 2,7. Przeprowadź go przez 2to3, a jeśli nie przejdzie wszystkich testów jednostkowych, napraw wersję 2.x, aż wygenerowana wersja 3.x będzie działać.

Ostatecznie, gdy chcesz zrzucić wsparcie 2.x, możesz pobrać wygenerowaną wersję 3.x i zacząć bezpośrednio ją modyfikować. Do tego czasu, tylko modyfikować wersję 2.x.

To jest przepływ pracy wysoce polecany przez ludzi, którzy pracowali na 2to3. Niestety nie pamiętam od razu linku do dokumentu, z którego to wszystko zebrałem.

+0

I nie przejmuj się Pythonem 3.0.x, który był natychmiast przestarzały po wydaniu wersji 3.1. –

+0

- Jeśli uda Ci się wykopać ten link, bardzo bym chciał go zobaczyć. –

Powiązane problemy