Apple Silicon(M1チップ)におけるpyenv+pipenvでのPython環境構築

# はじめに
Apple Siliconを購入した後輩用にpyenv+pipenvのPython環境の構築方法(M1チップ版)をメモとして記すための記事です。
※Rosetta2(x86環境)


**この記事は2021年4月段階に書いたものであり、**
**他により良い手段・記事が多くあるためブラウザバックしてください**

# Rosettaの使用を許可
1.  Finderを起動

2. アプリケーション > ユーティリティ > ターミナル.app を右クリック

3.「情報を見る」をクリック

4.「Rosettaを使用して開く」 にチェックを入れる

<a id="#Chapter1"></a>
# Homebrewのインストール
[The Missing Package Manager for macOS (or Linux) — Homebrew](https://brew.sh/)
公式Webページよりインストール用のコマンドを実行します。

```
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
インストールが終了すると

```
==> Next steps:
- Add Homebrew to your PATH in /Users/ユーザ名/.zprofile:
    echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/ユーザ名/.zprofile
    eval $(/opt/homebrew/bin/brew shellenv)
- Run 'brew help' to get started
- Further documentation:
    https://docs.brew.sh
```
とパスを通せと言われるので

```
$ echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/ユーザ名/.zprofile
$ eval $(/opt/homebrew/bin/brew shellenv)
```
を実行。

```
$ brew -v
```
で入っているか確認。


<a id="#Chapter2"></a>
# pyenvのインストール
brewでpyenvをインストール。ついでに今後使うのもまとめて。

```
$ brew install pyenv
$ brew install pipenv
$ brew install zlib
```
pyenvのpathを設定。

```
$ vi ~/.zprofile
```
でシェルの環境設定ファイルを開き、

```
export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
fi
```
と記入
からの変更を反映

```
$ source ~/.zprofile
```

<a id="#Chapter3"></a>
# python本体のインストール
pyenvでpython3.9.4をインストール。
(python3.8系以前は少しややこしいので調べてね。)
システム全体(global)の使用バージョンを3.9.4で設定。

```
$ pyenv install 3.9.4
$ pyenv global 3.9.4
```
反映されているかを確認

```
$ pyenv version
```
`>> 3.9.4 (set by /Users/ユーザ名/.pyenv/version)`と表示されればOK！

<a id="#Chapter4"></a>
# pythonのローカルバージョン管理
プロジェクトのディレクトリを作成し、移動。

```
$ mkdir ~/test
$ cd ~/test
``` 
そのプロジェクト内で使用するバージョンを指定
(今回は3.9.4しか入れてないので3.9.4を指定しますが、目的にあったバージョンをお使いください。)

```
$ pyenv local 3.9.4
$ pyenv version
```
`>> 3.9.4 (set by /Users/ユーザ名/test/.python-version)`と表示されればOK！

<a id="#Chapter5"></a>
# pipenvでの仮想環境の作成
3.9.4の仮想環境を作成・実行

```
$ pipenv --python 3.9.4
$ pipenv shell
```
これで仮想環境に入れたので必要なライブラリをインストールしましょう。

```
$ pipenv install pandas
```
<a id="#Chapter6"></a>
# pandasのインストールでエラーが...
numpyを使用するライブラリ等をインストールする際にエラーが出る可能性有り

```
Error:  An error occurred while installing pandas!
Error text: Collecting pandas
 Using cached pandas-1.2.4.tar.gz (5.5 MB)
...
ERROR: Command errored out with exit status 1: /Users/ユーザ名/.local/share/virtualenvs ... Check the logs for full command output.
```
これは実際に後輩のM1 Macで起きたエラー。
原因はpipのバージョンっぽい？

<a id="#Chapter7"></a>
# 解決策

仮想環境に入っている場合はまず脱出。

```
$ exit
```
pipが最新版の20.2.3 (2021/04/17時点)じゃないことを確認

```
$ cd
$ pip -V
```
入っているpythonのバージョンを確認し、
今後使うバージョンに合わせる(今回は3.9.4)

```
$ pyenv versions
$ pyenv global 3.9.4
```
pipのバージョンを最新にし、確認。

```
$ pip install --upgrade pip
$ pip -V
```
プロジェクトのディレクトリへ移動し、
仮想環境を削除 → 新規でインストール

```
$ cd ~/test
$ pipenv --rm
$ pipenv --python 3.9.4
```
これでpandasが入るはず！

```
$ pipenv install pandas
```


<a id="#reference"></a>
# 参考
- メディアクリエーション・データデザイン演習1(林康弘准教授) SPAプログラミング環境構築資料
- [M1 Mac 向け Homebrew3.0.0 をインストールする](https://yuukiyg.hatenablog.jp/entry/2021/02/13/161012)
- [【M1】MacにHomebrwがインストールできない「zsh: command not found: brew」](https://qiita.com/___xxx_/items/17655df4e80ebadd8fc3)