miniforgeを使ってM1 MacにCondaの環境を準備する

## 前回

いろんな記事調べてPyenvを使ってなんとかPythonを入れた。
その時の記事は[こちら](https://qiita.com/cocco0141/items/ee9cf3a4eb30026e0a27)

## 今回やろうとしていること

condaでpython環境整えたらいいよとアドバイスいただいたので
バージョンや仮想環境も含めてcondaで管理したい。


### 私の環境

macOS Monterey 12.6
MacBook Air (M1, 2020)
Python  3.10.8

conda  何も入っていない状態↓
`zsh: command not found: conda`

動いているところ  arm64

## なんでminiforge

Pythonの環境を作るにあたって思ったことは
「こんなにいろんな用語が出てくるとは思わなんだww」
でした。

1. 仮想環境の種類やパッケージ管理にanacondaにminiconda、
本当に色々多すぎてどれをどう使っていくのかが初心者にはわからなかった...

2. Pyenvを使ってPythonを入れてみたが、その後Pyenvの使いにくさにあたってしまい、いただいたアドバイスをもとに環境を見直すことにした

3. まだPythonを入れただけで仮想環境は準備していなかったので変更しやすかった

特にこの辺りが環境周りを変えた主な理由です。

最初はminicondaで環境を作ろうかと思ったのですが
M1 Macという縛り（?）があったため、相性の良い環境はないかと調べていった時に見つけたのがminiforgeでした。



## miniforgeをインストール

まずminiforgeの[Github](https://github.com/conda-forge/miniforge)に入って
README.mdの[Download](https://github.com/conda-forge/miniforge#download)から

`Miniforge3-MacOSX-arm64`というファイルをダウンロードしました。
![スクリーンショット 2022-11-15 14.32.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884345/d6c1d719-e8df-acff-3c1d-f275f9f5ea67.png)

ダウンロードフォルダに落としたシェルスクリプトが入っているので
実行前にターミナルでファイルの場所まで移動しておきます。→`cd Downloads`

### シェルスクリプトを実行してみる

```
bash Miniforge3-MacOSX-arm64.sh
```
このコマンドを実行するとインストールが始まります。

基本的にEnterキーとyesを押しておけばインストールできます。
※実行メモを飛ばして次の工程をみる場合は[こちら](#condaが入ったかを確認)



今後、自分が見返しても良いように、インストール時に聞かれる内容をメモとして残します。

実行コマンドを押すと
```
Welcome to Miniforge3 22.9.0-1

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>
```
と聞かれるので「ENTER」を押す。
次に著作権周りの内容の確認が出てくるので

```
Do you accept the license terms? [yes|no]
```
と聞かれるまでEnterキーを押し続け
上文の「ライセンスに同意しますか?」という内容には「yes」を。

続いて、
```
Miniforge3 will now be installed into this location:
```
Miniforge3 のインストール先を聞かれるので問題なければEnterを。
違う場所に指定したいなら⌘/Ctr+Cで場所変更を。

Enterを押すと諸々がインストールされます。

```
Do you wish the installer to initialize Miniforge3
by running conda init? [yes|no]
```
初期化して良い？と聞かれるので「yes」を。

```
Thank you for installing Miniforge3!
```
と聞かれたらインストールが完了になりますが
最後にこのコマンドを入れます。

```
source ~/.zshrc
```

### Condaが入ったかを確認

```
conda -V
conda 22.9.0
```

condaが入ったかを確認します。
not foundにもなっていないようなのでひとまず安心できた。


## 仮想環境を作っていく

今回は「backend」という名前で仮想環境を作ります。
Pythonのバージョンは3.10です。

```
conda create --name backend python=3.10
```

このコマンドを打ち込むと色々ターミナルの中で動いていき
`Proceed ([y]/n)? `「続行する?」と聞かれるので「y」を押します。

`Retrieving notices: ...working... done`
と聞かれたら仮想環境を有効化するために

```
conda activate backend
```
と入れて起動させます。

### プラグインを入れてみる

- Webアプリのためにdjango
- データ分析のためにjupyter, pandas

を追加してゆこうかと考えています。
データ分析は一旦置いといて、djangoをインストールします。

```
conda install django
```

インストールが終わったら`conda list`を実行してdjangoが含まれているか確認します。


## ローカルサーバーの準備

ローカルサーバー基、プロジェクトを作るために
ディレクトリを置く場所まで移動しておきます。

仮ですがtestという名前で用意しますので。

```
django-admin startproject test
```
を入れ込むと「test」ディレクトリが作られ色々入った模様です。
サーバーを起動するため`cd test`で移動します。

### 注意点：VSCodeでコマンド実行しない方が良い

ローカルサーバーを立てようとした際に
VSCodeのターミナルでコマンド` python manage.py runserver`を実行しましたら

```
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?
```
というエラーが出ました。

原因はVSCodeで実行しようとしたためでした。

なのでVSCodeのターミナルではなく、通常のターミナルの方で

```
conda activate backend

python /path/to/script/manage.py
```
を実行し直しました。

もうすでにmanage.pyがあるディレクトリに移動している場合は
2つ目のコマンドは実行しなくて問題ないです。

### サーバーの起動

```
python manage.py runserver
```
を打つと

```
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

Django version 4.1.3, using settings 'test.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
```
と出ましたので`http://127.0.0.1:8000/`をブラウザに入れると

![スクリーンショット 2022-11-16 0.16.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884345/faacdb31-73b5-563c-a803-f039228a9ee4.png)

無事起動できました!


起動しているものを止める場合は次のコマンドを。
```
conda deactivate
```


## 参考

今回の環境作成にあたって参考にした記事サイトさまです。

- [テックダイアリーさん](https://tech-diary.net/install-python-on-m1-mac/)
- [マゴトログ シュミニイキルさん](https://blog.janjan.net/2021/02/01/python-django-uses-visual-studio-code-import-error-could-not-import-django-2/)