python 2 to 3 をしている話。

AWS lambda で python2なものとpython3なものが混じっていて、同一リポジトリ管理されていてlinterとかディレクトリごとに分けるのダルい、まとめてやりたい。

ということで、一念発起してpython3への移行を開始しました。

超雑に全部python3へ移行させて、実行エラーから修正するという、あんまりよろしくないやり方で進めました。

そんな中、よくあるエラーがあったのでまとめます。

urllib

urllib.request とか urllib.parse とかに分かれた。手動で適当になおしていると漏れがある。 urllibでgrepしましょう。

iterator

python2ではlistが帰ってきていたものの多くがiterableなものを返すようになったので、必要に応じてlistにする必要があります。 map, filter, reduce など、reduceはitertoolsモジュールに入ったのでそこも。 これもgrepして探しましょう。

str とbytes

厳密に区別されるようになったので、どっちを受け付けるのか、どっちを返すのかを確認しましょう。 これはわりと頑張るしかない気がします。

終わりに

python3へ移行して小学生に笑われないようにしていきまっしょい