Překlopení na Python 3.0:
Nejlepší strategie přechodu z Python 2.x na Python 3.0 je snad tato:
- (Předpoklad:) Začněte s tím, že si vytvořte testovací prostředí, které bude umět prakticky otestovat váš program.
- Přejděte na Python 2.7. Toto by neměla žádná jiná extra práce, než jakákoliv jiná při přechodu z Python 2.x na Python 2.(x+1). Všechny vaše testující testy musí projít.
- (Pořád jsme u 2.7:) Zapněte parametr příkazové řádky -3. To umožní zapnout upozorňování na věci, které ve 3.0 nebudou nebo budou změněny. Znovu projeďte svůj program svým testem, a postupně odchyťte a odlaďte svůj kod tak, aby na konci práce se žádná varování neobjevovala.
- Spusťte překladač 2to3 nad vaším programem/programy. Způsob instalace najdete níže a použití na http://docs.python.org/library/2to3.html. Výsledek překladu spusťte pod Pythonem 3.0. Ručně se zbavujte postupně všech problémů, dokud vaše testy neprochází tiše bez varování a výjimek.
Není doporučeno psát kód, který bude fungovat jak pod 2.7, tak pod 3.0; museli byste použít velmi nezdravě vypadající styl kódovaní - např. vynechávání příkazů print, metatřídy a mnohem více. Pokud budete používat knihovnu, která musí podporovat jak 2.7 tak 3.0, pak je nejlepší způsob pozměnit bod 3 výše uvedeného seznamu - raději editace zdrojového kódu 2.7 a opětovné spouštění překladače 2to3 než editací zdrojových kódu verze 3.0.
Instalace na Windows
Pomocná konverzní utilita z řady 2.x na 3.x se stahuje a instaluje například takto. Pusťte si Příkazový řádek a zadejte:
cd %TEMP% svn checkout http://svn.python.org/projects/sandbox/trunk/2to3 cd 2to3 setup.py install
Prvním řádkem se přepnete do své dočasné složky. Druhý řádek stáhne utilitu - zde je nutno mít předem nainstalováno svn - snad nejlépe pro tyto účely řádkový http://www.sliksvn.com/en/download/. Třetí řádek se přepíná do složky 2to3 a čtvrtý řádek vše nainstaluje. Utilita 2to3.py se nainstaluje do Python26\Scripts.
Odkazy
- http://diveintopython3.py.cz/porting-code-to-python-3-with-2to3.html
- http://www.astrobetter.com/wp-content/uploads/2011/08/python2python3.pdf
- http://python3porting.com/2to3.html
- http://packages.python.org/six/