Python 2.7.x のサポート終了まで1年を切りましたね!
Python2.7.0 のリリースが2010年7月3日ですから、
「えっ?僕が入社した時には、すでに3.xでしたよ?」
「2.7なんて使ったことがない」
という人も多いことでしょう。一方でいまだに2.7.xとの腐れ縁が切れない人も多いと思います。私もそうです。
そこで、今年こそPython 2.7を廃止するべく、3.xへの移行方法を調べてみました。
公式ドキュメントに載っていた
実は調べるまでもなく、公式ドキュメントに載っていました。
あなたのプロジェクトを、単一ソースで Python 2/3 両方に対応させる基本的なステップは次のとおりです。
- Python 2.7 だけをサポートすることに気を配ってください。
- 良いテストカバレッジを確保してください。 (coverage.py が推奨されます; pip install coverage)
- Python 2 と 3 の違いを学びましょう。
- Futurize (もしくは Modernize) を使ってコードをアップデートしてください。 (たとえば pip install future)
- Python 3 サポートに関してデグレを防ぐために Pylint を使ってください。(pip install pylint)
- caniusepython3 を使ってどの依存性があなたの Python 3 の使用を妨げているかを検出できます。 (pip install caniusepython3)
- 依存性があなたを邪魔しなくなってさえしまえば、Python 2 & 3 への互換性を保つのを保障するために、継続的インテグレーションを使いましょう (tox が複数バージョン Python 相手のテストの手助けをしてくれます; pip install tox)
- Consider using optional static type checking to make sure your type usage works in both Python 2 & 3 (e.g. use mypy to check your typing under both Python 2 & Python 3).
最後の行だけ未翻訳なのが残念ですが、標準ライブラリだけでなくオススメのサードパーティ・ツールまで紹介しています。さらに、ページの後半には詳細手順も載っています。これだけ充実していれば、作業段階の手順はバッチリですね。
なお、残念ながら「上司を説得する」「予算を確保する」といったステップについては情報がありませんでした。