久しぶりにDjangoを使って環境構築をしていたら
DjangoがImportできないエラーが発生
$ python3 manage.py runserver
Traceback (most recent call last):
File "/Users/heihei/work/sns/manage.py", line 11, in main
from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/heihei/work/sns/manage.py", line 22, in <module>
main()
File "/Users/heihei/work/sns/manage.py", line 13, in main
raise ImportError(
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
原因
原因としては最後の
Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
これが解決策のようです
1.Djangoはインストールされているか?
2.環境変数PYTHONPATHで使用できることを確認したか?
3.仮想環境を有効にしていますか?
結論として自分の場合は仮想環境ではなく、ローカル環境で実行していたようです。
下記のディレクトリ構成として説明していきます(一部省略しています)
bin/とpyvenv.cfgは次の手順で作成するので無視してください
myapp/
├ bin ☆
├ src
│ ├ asgi.py
│ ├ settings.py
│ ├ urls.py
manage.py
pyvenv.cfg ☆
解決策
仮想環境上でDjangoを動かす必要があるので仮想環境を作成していきます
今回はvenvを使用します
1.ルートディレクトリのmyapp/配下で下記のコマンドを実行して仮想環境を作成します
python3 -m venv .
これを実行すると、bin/ディレクトリとpyvenv.cfgが作成されると思います。
ここでpip listを実行してインストールされているパッケージを確認します
$ pip list
Package Version
---------- -------
pip 23.0.1
setuptools 58.0.4
仮想環境を作成したばかりでDjangoがインストールされていないです。
2.Djangoインストールします
pip install django
3.仮想環境を有効化します
source ./bin/activate
これを実行するとターミナルがこのように仮想環境名が()カッコで表示されます
(myapp) xxxxxxx-yyy$
これでDjangoの起動エラーが解消されました
Djangoを実行してみましょう
python manage.py runserver