Django アプリ開発日記④ エラー状況 django-allauth用のマイグレーションファイルができない(未解決)
- 2024.03.23
- programming
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のバージョンがあるのか?
→ 検証結果は、不明。
上記を踏まえ、別の検証を試みる必要がある。
-
前の記事
Could not build wheels for psycopg2-binaryが出た時の対処法 Mac対応 2024.03.09
-
次の記事
ざっくり、大規模言語モデル(LLM)とLangChainについて 2024.04.06