Django アプリ開発日記④  エラー状況 django-allauth用のマイグレーションファイルができない(未解決)

Django アプリ開発日記④  エラー状況 django-allauth用のマイグレーションファイルができない(未解決)

python Django 開発入門 第2版(翔泳社) を元に個人アプリを作成している。
作業を進めていく中で、django-allauth用のマイグレーションを行った際にエラーが発生した。

未だ解決はできていないが、発生した状況と解決を試みた経緯をここに記したい。

なお、本記事での対象マシンはMacである。
Windowsをお使いの方は、本書を参考にされたい。

エラーの発生した状況 その1

エラー発生時の各種バージョンの状況

ここに発生時のバージョンを記しておく。後にバージョン変更による解決を試みたからである。

  • Mac OS Sonoma
  • Python 3.11
  • Django 5.0.3 (2024/3/24時点で最新)
  • django-allauth 0.61.1(2024/3/24時点で最新)

エラーの発生

python Django 開発入門 第2版(翔泳社)p246にて、makemigrationコマンドをPyCharmから実行した際、「No changes detected」と表示された。
ファイルが作成されないのである。

(venv_private_diary) (base) (User) private_diary % python manage.py makemigrations
No changes detected

エラー解決までに試したこと

解決になる記事を探していると、以下の記事に出会った。

参考記事
https://itc.tokyo/django/django-corsheaders/

記事の中では、「django-allauthのバージョンを最新から、参考書と同じバージョンに再インストールした結果解決」とあった。

そこで、現在のdjango-allauthをアンインストールしたのち、バージョンを書籍と同じ0.45.0でインストールすることにした。

django-allauthをアンインストールする。
(venv_private_diary) (base) (User) private_diary % pip uninstall django-allauth

次に、django-allauth0.45.0をインストールする。
インストールはPyCharmから行う。
「表示」メニューから「ツールウィンドウ」→「Python Packages」を選択して、Pythonのパッケージを管理するウィンドウを表示する。
検索ボックスで「django-allauth」を入力。該当するパッケージが一覧で表示され、「django-allauth」が選択されていることを確認したら、ウィンドウ右側にあるバージョンのプルダウンを0.45.0に指定。そして、インストールボタンをクリック。

少し待つと、django-allauth0.45.0がインストールされる。

そして、makemigrationコマンドを実行したみた。

(venv_private_diary) (base) (User) private_diary % python manage.py makemigrations

無事に作成されているのを確認。

次に、migrateコマンドを実行
(venv_private_diary) (base) (User) private_diary % python manage.py migrate

こちらも無事に作成された。

これで解決かと思いきや、新たなエラーに遭遇した。

エラーの発生した状況 その2

マイグレーションファイルが無事に作成され、これで解決かと思われたが、今度は、runserverが起動しない。

エラー文:
django.core.exceptions.ImproperlyConfigured: WSGI application ‘private_diary.wsgi.application’ could not be loaded; Error importing module.

エラー解決までに試したこと

解決になる記事を探していると、以下の記事に出会った。

参考記事
https://itc.tokyo/django/fix-error-on-wsgi/

記事によると、cors-headersのインストールで解決できたとのこと。
そこで、本記事の通り、試してみることにした。

(venv_private_diary) (base) (User) private_diary % pip install django-cors-headers

しかし、結果はうまくいかず、runserverは起動することはなかった。

django-allauthのバージョンを最新に戻してみる

試しにdjango-allauthのバージョンを最新に戻したら、renserverは起動した。
しかし、migrationはエラーが出た。

上記を踏まえ、以下の仮説をたて、検証してみた。

仮説1:ranserverとmigrationがどっちも動くdjango-allauthのバージョンがあるのか?

検証結果

 django-allauthを56.0でやったら、ranserverは動いたが、migrationは動かなかった。
 django-allauthを50.0でやったら、ranserverは動かなかったが、migrationは動いた。
 django-allauthを54.0でやったら、ranserverは動かなかったが、migrationは動いた。

仮説2:djangoのバージョンを落としてみる。

最新のdjangoのバージョンに対応していないと思ったため、最新の5.0.3をアンインストールしてから4.2をインストール。

4.2にした理由は、python3.11がdjangonoサポート範囲内の為。

検証結果

django-allauthを54.0でやったら、ranserverは動かなかったが、migrationは動いた。
django-allauthを55.1でやったら、ranserverは動かなかった、migrationも動かなかった。
django-allauthを55.0でやったら、ranserverは動かなかった、migrationも動かなかった。
django-allauthを56.0でやったら、ranserverは動いたが、migrationは動かなかった。

結果

検証結果から、ranserverとmigrationがどっちも動くdjango-allauthのバージョンを見つけることはできなかった。

まとめ

django-allauth用のマイグレーションファイルができない理由は、django-allauthのバージョンが最新に対応していないから?
→ django-allauthのバージョンを落として、実施したらファイルが作成された。

django-allauthのバージョンを落としたら、runserverが起動しなくなった。
ranserverとmigrationがどっちも動くdjango-allauthのバージョンがあるのか?
→ 検証結果は、不明。

上記を踏まえ、別の検証を試みる必要がある。