事象
プロジェクト作成、startappコマンド後、以下のエラーが発生した。
ようするに"django"関係がすべて読み込めていない。
Import "django.contrib" could not be resolved from source
Import "django.apps" could not be resolved from source
Import "django.db" could not be resolved from source
Import "django.shortcuts" could not be resolved from source
環境
Windows 10
Python 3.10.2
Django 4.0.1
venv利用あり
[2022/02/06] 対処方法まとめ2を追記
対処方法まとめ
- Pylance を Jedi に変える
- VSCodeにdjangoのモジュールを見つけられるよう設定する
1の方法でもエラーは出なくなりますが、"django.xx"の部分が色づいてくれません。
Pythonのコード補完はしれくれますが、django関係の保管はしてくれない状態です。
正直、Djangoを使うには扱いづらいので、【方法2】をおすすめします。
対処方法1:Pylance を Jedi に変える
Pythonの補完には通常Jediというものが使用されるようですが、自動で設定されていないようなので
手動で設定を行う。
まず仮想環境に入る。
仮想環境を設定してない方は無視してOK。
Visual Studio Code insiders(以降、VSCode)の表示→コマンドパレットを押下し出てきた入力欄に「>settings」と入力。
Open Workspace Settings(JSON)
を選択。
この際、Open xxx Settings(JSON)
がいくつかあるが、Open Workspace Settings(JSON)
を選択する。
以下を記載する。
{
"python.jediEnabled": true,
"python.languageServer": "Jedi",
}
true
は小文字なので注意。
保存後、VSCodeを再起動し、エラーが解消したかどうかを確認する。
対処方法2:VSCodeにdjangoのモジュールを見つけられるよう設定する
PythonもDjangoもインストールしているのにJediがうまく動いてくれない。
そんなときはVSCodeがPythonファイルを正しく読み込めていないのかもしれない。
それを正しく設定する手順のご紹介。
まず仮想環境に入る。
仮想環境を設定してない方は無視してOK。
次にDjangoのインストール先を確認する。
VSCodeのターミナル→新しいターミナル→画面下部に出てきたターミナルに以下を入力してエンター。
python
コンソールが>>>
に変わったらpythonの対話モードに入れたので、import django
と入力エンター、続いてprint(django.__file__)
と入力してエンター。
これでDjangoに関わる設定が、
C:\django\.venv\lib\site-packages\django\__init__.py
にあることがわかった。ただしdjango以外のモジュールも読み込ませることがあるため、VSCodeに設定させるのは、
C:\django\.venv\lib\site-packages
の部分になる。後で使うのでメモしておくこと。
続いてVSCodeの表示→コマンドパレットを押下し出てきた入力欄に「>settings」と入力。
[2023/03/18 修正]
Open User Settings
を選択。
この際、Open xxx Settings
がいくつかあるが、Open User Settings
を選択する。
文末に(JSON)
とついていないことをよく確認する。
設定の検索
にextra path
と入力し、Python › Analysis: Extra Paths
の項目の追加
を押下する。
パラメータを入力できるようになるので先ほどの、
C:\django\.venv\lib\site-packages
を入力し、OK
を押下する。
Djangoファイルに戻り、Pylanceのエラーが消えていることを確認する
お疲れ様でした。
参考
VSCode Python Extension "Downloading Microsoft Python Language Server" hangs
Visual Studio CodeでDjangoのライブラリが「Import XXX could not be resolved from source」になる時の対処法