
背景
2021年12月7日にDjango4.0がリリースされました。
リリースノート
https://docs.djangoproject.com/ja/4.0/releases/4.0/
今は3.2.9を利用していて、LTSなので使い続けることは可能なのですが、バージョンアップで後で苦労するのが大変そうだったので、今のうちにあげてみることにしました。
バージョン管理にPoertyを利用しているので、それを前提に記載していきます。
pyproject.tomlの変更
現在のバージョンの確認
現在のバージョンの確認をします
1 | $ docker-compose run --rm web pip list |
現在は3.2.9です。
pyproject.tomlの確認
pyproject.tomlでの指定を確認します。
1 | [tool.poetry.dependencies] |
Djangoのバージョン指定を4.0.0にします。
poetryのバージョン指定
4.0系のバグフィックスバージョンは含めたいので、^4.0.0と指定します。~4.0と書いてもいいのかもしれませんが、^4.0.0の方がわかりやすいかなと思います。
diffを取ると以下のようになりました
1 | -Django = "^3.2.9" |
パッケージの更新
パッケージの更新にはpoetry updateコマンドを利用します。Djangoのみ更新したいので、パッケージも指定します。
1 | $ docker-compose run --rm web poetry update Django |
Djangoが4.0にupdateされたと同時にpytzが削除されたようです。
poetry.lockの確認
poetry.lockのdiffも確認します。
1 | $ git diff poetry.lock |
Djangoのバージョン指定が変わっていることがわかります。また、pytzが削除されています。
pytzが削除されて、tzdataが追加されている件については、
https://docs.djangoproject.com/ja/4.0/releases/4.0/#zoneinfo-default-timezone-implementation
が関係していると思います。
この変更の理由については、以下のスライドがわかりやすいと思います。
https://www.slideshare.net/ryu22e/python-39zoneinfo
まとめ
まだアプリケーションを作り込んでいないので、バージョンをあげたことによる変化は感じていませんが、逆に早めにバージョンを上げることで、これ以降のバージョンアップもスムーズにできるというメリットがあると思います。
新しいバージョンが発表されたら早めに対応するのが良いと思います。