Python2からPython3への移行
利用するツール
オススメ手順
一気にPy3化する場合は、
2to3 でコードを自動変換したらある程度は書き換えできるかも
巨大なコードを段階的に移行するには、Py2/Py3両対応が必要
変換: python-futureの futurize --stage1 コマンドでexcept文やprint文のコードを自動変換
実装: six.moves でPy2/3で移動したパッケージに対応
実装: six で bytes/str/unicodeの調整
実装: iterの調整
実装: next() の調整
実装: map の調整
実装: ur"" リテラルの調整
実例
資料
Python-3.3 リリース直前、ライブラリのPython2/3両対応
PyCon APAC 2013 in Tokyo
既存のPython2実装の何かをPython3に移行する時の参考に
ctypesでDLLをcallする場合、文字列をbytesで渡す必要がある
PyCon JP 2015
PyCon JP 2019
「It’s 2019 and I’m still using Python 2. Should I be worried?」(2019年、まだPython 2を使っているんだ。心配する必要あるかな?)
Python 2がまだ使われている理由
ビジネスの観点からは、Python 2からPython 3への移行にはコストがかかりすぎる
移行よりも、新機能追加や緊急のバグフィックスが優先される
古いコードベースの移行は非常な困難を伴うかもしれない
Python3へ移行するメリット
Python 2のオフィシャルなサポートは近いうちに終了する
オフィシャルなサポートが終了したバージョンのPythonを使い続けずに済む
Python 3の方がPython 2よりも高速
便利な新機能も実装が続けられている
現在では多くのフレームワークやライブラリがPython 3へと移行を済ませている