2008-12-22 27 views
5

Mam mały projekt Chcę przetestować portowanie do Pythona 3 - jak to zrobić?Przepływ pracy w Pythonie 3?

Dokonałem kodu uruchamianego bez ostrzeżeń przy użyciu python2.6 -3 (głównie usuwanie wywołań .has_key()), ale nie jestem pewien najlepszego sposobu użycia narzędzia 2to3.

Narzędzie 2to3 służy do konwersji tego kodu źródłowego na składnię 3.0. Nie edytuj ręcznie wyników wyjściowych!

Uruchamianie 2to3 something.py generuje diff, co nie jest przydatne we własnym zakresie. Z flagą --write nadpisuje something.py i tworzy kopię zapasową .. Wydaje się, że muszę to zrobić ..

2to3 something.py 
python3.0 something.py 
mv something.py.bak something.py 
vim something.py 
# repeat 

..which jest nieco okrągły-a-atak - najlepiej mógłby zrobić coś podobnego ..

mv something.py py2.6_something.py # once 

2to3 py2.6_something.py --write-file something.py 
vim py2.6_something.py 
# repeat 

Odpowiedz

5

Aha, można rura wyjście 2to3 dowodzić patch, który może zapisać zmodyfikowany plik do nowego pliku:

mv something.py py2.6_something.py 
2to3 py2.6_something.py | patch -o something.py 
+1

użyj cp zamiast mv, aby działał. – nosklo

+0

@nosklo: nie. patch czyta wyjście diff przez 2to3 – Yktula

0

2.x powinien być cODEBASE aktywnego ROZWOJU nt, więc 2to3 powinno naprawdę działać w gałęzi lub katalogu tymczasowym. Nie jestem pewien, dlaczego chcesz, aby wersje 2.x i 3.x leżały w tym samym katalogu. distutils ma skrypt build_2to3, który uruchomi 2to3 na instalacji 3.0.

+0

Dzięki temu mogę szybko/łatwo edytować wersję 2.x, uruchomić 2to3, uruchomić testy na 3.x (i powtórzyć). Jeśli mam oddział w wersji 3.x, jak szybko wprowadzić zmiany w gałęzi 2.x i zregenerować kod 2to3? – dbr

+0

Ogólnie, wprowadzasz wszystkie zmiany w gałęzi 2.x i korzystasz z 2to3 podczas dystrybucji lub prób przenoszenia swojej biblioteki. –

+0

Postawiłem pytanie nieco jaśniej. Uczyniłem gałąź py3, aby zawierała zmiany, które musiałem wprowadzić w kodzie py2.6, więc byłoby to 2to3 bez błędów – dbr