【VSCode】Pipenv で立ち上げた仮想環境でDjangoを動かす

# 大前提
当方分からない事が多々ありますので間違いや遠回りはご容赦願います.
コメント等で教えていただけると嬉しいです！！

# やりたいこと

pipenvで仮想環境を立ち上げてVSCodeでDjangoを動かす.

## 参考
基本的に '仮想環境の作成' は [参考１](https://zenn.dev/nekoallergy/articles/py-env-pipenv01)
'python, Djangoのインストール' は[参考２](https://qiita.com/nossey/items/6c1d900ef724f13ee193)
'VSCodeでDjangoを動かす' は[参考3](https://daeudaeu.com/vscode-django/#open)
を主に参考にした.　ありがとうございました.





詳しい内容は参考を見てもらって以下では私が躓いた箇所を主に述べていく

### pipenvとは
パッケージのインストールから仮想環境の構築までを行う事ができるpythonのパッケージマネージャの一つ
コマンドcdを用いることで簡単に仮想環境を行き来できる点が特徴.
### 仮想環境内でのパッケージインストール

[参考１](https://zenn.dev/nekoallergy/articles/py-env-pipenv01)を参考にして新しいディレクトリの作成からそこでの仮想環境構築, パッケージのインストールを行った. 他のサイトにおいて` pipenv --python 3.6`のようにpythonのversionまでを指定してあげるとディレクトリ内ですでにrequirements.txtを作成している場合はその中身に応じたパッケージのインストールが自動的にされるという旨の記載があったが私の場合はできなかったので大人しく`pipenv install -r requirements.txt`でインストールした.

#### 仮想環境に入れない
`pipenv --python 3.6`で仮想環境をProjectAというディレクトリで作成しても`pipenv shell`コマンドで目的の仮想環境に入れず他の仮想環境に入ってしまう事があった. これはProjectAよりも上の階層(`/Users/username/Desktop/ProjectA`という構造なら`/Users/username`など)で誤って仮想環境を作成していたことが原因であった.`/Users/username`で仮想環境が作られているためそれよりも下の環境で`pipenv shell`コマンドを打つと上の方の仮想環境に入ってしまっていた. 上の仮想環境を破棄して自動的に作成された`pipfile`,`pipfile.lock`を破棄することで解決する事ができた.

### Djangoの動作確認

[参考２](https://qiita.com/nossey/items/6c1d900ef724f13ee193)を参考にして行った.
ターミナルにてPython, Djangoがインストールされている仮想環境内で以下のコマンドを入力して確認した
```
django-admin startproject mysite
cd mysite
python manage.py migrate
python manage.py runserver
```
 結果は以下　http://127.0.0.1:8000/
![スクリーンショット 2022-05-01 11.27.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675330/9dd8bf11-7fc3-280c-3f57-d1e46f6f07ae.png)


## VSCodeの設定

ここまでで仮想環境の構築とそこでのdjangoの動作確認を行なった. 次にVSCodeを用いて動かせるようにしていく.
基本的には[参考3](https://daeudaeu.com/vscode-django/#open)をもとに進めていった.
(launch.jasonの中身のことも説明されているのでわかりやすかったです!)

### jasonファイルのエラー
```launch.jason
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Django",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": [
                "runserver"
            ],
            "django": true
        }
    ]
}
```
ここで`"program": "${workspaceFolder}/manage.py",`において実行した際に`FileNotFoundError: [Errno 2] No such file or directory`というエラーを吐かれた. これはworkspaceFolderがmusiteの上となっていてmanage.pyを探せなかったことに起因する.
以下のように変更することで解決した.

`"program": "${workspaceFolder}/mysite/manage.py",`

#### 補足: importエラー

ライブラリをインストール済みにも関わらず、Visual Studio Code 上で import や from の箇所でエラーが表示されたままになっていた.

具体的には、 `ModuleNotFoundError` や `Unable to import` といったエラーが表示される.

これはVSCodeにおいて適切なインタープリタが選択されていないことが原因であった.
##### 解決方法
まずはpipenvで作った仮想環境がどこにあるのかを以下のコマンドで調べる. [参考](https://aquasoftware.net/blog/?p=1038)
```
pipenv --venv
```

場所が確認できたらVSCode上の設定を変更する.[参考](https://kuttsun.blogspot.com/2020/01/vscode-python-import-from.html)

・`F1` を押す
・`Python: Select Interpreter` を入力
・表示された一覧から適切なインタプリターを選択する

適切なインタープリタが選択されたことによってエラーが解消される.

## 最後に
基本的に参考をもとに進めればどうにかなると思うが何点かつまづいたので備忘録的に記しました. 
どなたかのお役に立てれば嬉しいです.