VSCode Django Import xxx could not be resolved from source Pylance エラーの解決方法

## 事象
プロジェクト作成、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
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/1e7dd20b-b0d3-4fa1-3092-6b3a73d2c896.png)
こんな感じで波線が出てしまう。

## 環境
Windows 10
Python 3.10.2
Django 4.0.1
venv利用あり

[2022/02/06] 対処方法まとめ2を追記
## 対処方法まとめ
1. Pylance を Jedi に変える
2. VSCodeにdjangoのモジュールを見つけられるよう設定する

1の方法でもエラーは出なくなりますが、"django.xx"の部分が色づいてくれません。
Pythonのコード補完はしれくれますが、django関係の保管はしてくれない状態です。
正直、Djangoを使うには扱いづらいので、【方法2】をおすすめします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/2f2a6b36-51fa-3315-6582-a25b25363d1d.png)


## 対処方法1:Pylance を Jedi に変える
Pythonの補完には通常Jediというものが使用されるようですが、自動で設定されていないようなので
手動で設定を行う。

まず仮想環境に入る。
仮想環境を設定してない方は無視してOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/5b3ff672-7d64-7c99-e549-38dee74a7f4c.png)

Visual Studio Code insiders（以降、VSCode）の表示→コマンドパレットを押下し出てきた入力欄に「>settings」と入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/b4dfa80d-3bfb-a01f-73f9-9668848c3019.png)
`Open Workspace Settings(JSON)`を選択。
この際、`Open xxx Settings(JSON)`がいくつかあるが、`Open Workspace Settings(JSON)`を選択する。

以下を記載する。

```
{
　　"python.jediEnabled": true,
　　"python.languageServer": "Jedi",
}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/537bd6c8-4478-3499-feb7-44c3a169f6ad.png)
`true`は小文字なので注意。
保存後、VSCodeを再起動し、エラーが解消したかどうかを確認する。

## 対処方法2:VSCodeにdjangoのモジュールを見つけられるよう設定する
PythonもDjangoもインストールしているのにJediがうまく動いてくれない。
そんなときはVSCodeがPythonファイルを正しく読み込めていないのかもしれない。
それを正しく設定する手順のご紹介。

まず仮想環境に入る。
仮想環境を設定してない方は無視してOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/5b3ff672-7d64-7c99-e549-38dee74a7f4c.png)

次にDjangoのインストール先を確認する。
VSCodeのターミナル→新しいターミナル→画面下部に出てきたターミナルに以下を入力してエンター。
`python`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/221a79a0-8a1d-7cf6-0416-182145717ed6.png)

コンソールが`>>>`に変わったらpythonの対話モードに入れたので、`import django`と入力エンター、続いて`print(django.__file__)`と入力してエンター。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/238de2f8-9ba7-3826-f70e-5aaff18b0aff.png)

これでDjangoに関わる設定が、
`C:\django\.venv\lib\site-packages\django\__init__.py`
にあることがわかった。ただしdjango以外のモジュールも読み込ませることがあるため、VSCodeに設定させるのは、
`C:\django\.venv\lib\site-packages`
の部分になる。後で使うのでメモしておくこと。

続いてVSCodeの表示→コマンドパレットを押下し出てきた入力欄に「>settings」と入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/8cd29223-ecd5-fc2b-b568-6661d730a2c8.png)

[2023/03/18 修正]
`Open User Settings`を選択。
この際、`Open xxx Settings`がいくつかあるが、`Open User Settings`を選択する。
文末に`(JSON)`とついていないことをよく確認する。

`設定の検索`に`extra path`と入力し、`Python › Analysis: Extra Paths`の`項目の追加`を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/c7543ae5-ff1a-21ae-e5ad-6a0b9fcfc511.png)

パラメータを入力できるようになるので先ほどの、
`C:\django\.venv\lib\site-packages`
を入力し、`OK`を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/9d6fd9b6-e87a-fc2d-c398-2eb3b056a02e.png)

入力後はこのような表示になっていればOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/baaba8f8-c3b0-4f36-f41a-53bc951ade27.png)

Djangoファイルに戻り、Pylanceのエラーが消えていることを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515586/d642de30-cff2-e676-e178-b40647e27d46.png)

お疲れ様でした。


## 参考
[VSCode Python Extension "Downloading Microsoft Python Language Server" hangs](https://stackoverflow.com/questions/60806673/vscode-python-extension-downloading-microsoft-python-language-server-hangs/60840142#60840142)
[Visual Studio CodeでDjangoのライブラリが「Import XXX could not be resolved from source」になる時の対処法](https://3pysci.com/vscode-2/)