ゼロからPython環境をHomebrew、pyenv経由で構築(MacOS)

# ゼロからPython環境をHomebrew、pyenv経由で構築
大学入学時に購入して何もわからず環境構築したMacBook Pro。
何かがおかしいと気づきつつ無理矢理使ってきましたが本当に限界を感じたので一旦出荷状態まで戻して全てを最初からやり直します。
**この記事ではPython環境をHomebrew、pyenv経由で構築していきたいと思います。**
一連の投稿のハブになる記事は[こちら](https://qiita.com/TakayoshiK/items/ae53424b788c8fcb645b)

**参考にさせていただいた記事**
[MacOSとHomebrewとpyenvで快適python環境を。](https://qiita.com/crankcube/items/15f06b32ec56736fc43a)
[macOS+zsh環境にpyenvをインストールする](https://qiita.com/myy/items/a526bdb43982cf82f96a)
[lzmaが入っていないって怒られるwarningを解消する](https://zenn.dev/grahamian/articles/f292163325653dbe2c42)

## 環境
MacBook Pro (13-inch, 2018)
macOS　Monterey Version 12.5
メモリ intel Core i5
zsh 5.8.1 (x86_64-apple-darwin21.0)

## 経緯
基本的にはgoogle ColaboratoryやDockerを使うもののなんだかんだ手軽に使えるようにローカルにもpythonを入れておきたいと思い環境構築。
pythonのバージョンを切り替えたいこともありそうなのと昔てきとうにpythonを入れたらpython2系列と競合したりいつの間にかpython3系列がいろんなところに存在したトラウマがあるので`pyenv経由でインストール`。(どうも今は2系列がpreinstallされてないみたいなので競合したりしない気もする)

## Xcodeをインストール
**既に完了している場合はスキップしてください**
Xcodeを入れとくと色々なライブラリーが使えるらしいのでXcodeをインストール。
インストールは[AppleStore](https://apps.apple.com/jp/app/xcode/id497799835)からできる。
そこそこ時間がかかるので進んでいるか不安になりますが多分大丈夫です。

終わったらComand Line Toolをダウンロードしていきます。
terminal(わからない人はcomand+spaceを押してterminalと検索)を開いて下のコマンドを実行。
```:terminal.app
user@host $ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
```
既に入っているらしい。(入っていない場合があるのかは知らない。入っていなければ指示に従って入れてください)
次にEULAに同意する。
```:terminal.app
user@host $ xcode-select -license
```
`space`を押して進めて大丈夫そうなら`agree`と入力して`Enter`を押しましょう。

最後にインストールされているのを確認します。
```:terminal.app
user@host $ xcode-select --print-path 
/Applications/Xcode.app/Contents/Developer
```
こんな感じでpathが出力されればOKです。
確認してないですがdeveloper toolsのインストールを求められる場合があるらしいので指示に従ってインストールしましょう。
(私は別のものをいじっている時に求められて入れていたので必要なかった？)

## Homebrewのインストール
**既に完了している場合はスキップしてください**
次はHomebrewをインストールします。
[Homebew公式](https://brew.sh/index_ja.html)に記載されているコマンドを入力してインストールします。(パスワードを求められます)
```:terminal.app
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
必要に応じて.zshrcファイルを作成してpathとかを書き込んでください。

Homebrewのインストールを確認しましょう。
```:terminal.app
user@host $ brew doctor
Already Up-to-date.
```
上のようにAlready Up-to-dateと出ればOKです。warnigが出た場合は適時解決しましょう。
私の場合はwarningが出て下のコマンドの実行を求められました。
```:terminal.app
user@host $softwareupdate --all --install --force
```

## pyenvのインストール
次はpyenvをインストールしていきます。
pyenvを使うことで複数のバージョンのpythonを使い分けながら開発することができます。
必要に応じて[pyenvのgithub](https://github.com/pyenv/pyenv)を参照しましょう。

terminalからHomebrewを使ってインストールしていきます。
```:terminal.app
user@host $ brew install pyenv
```
ここで~/.zshrcに書き込んでいきます。(/zprofileに書き込むパターンもあり、詳しくは適時調べてください)
まずは.zshrcが存在するか確認しましょう。
```:terminal.app
user@host $la -a
```
無い場合は作ります。(ある人はスキップ)
```:terminal.app
user@host $touch .zshrc
```
次にここに設定を色々書き込みます。
```:terminal.app
user@host $echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
user@host $echo 'command -v pyenv >/dev/null || exprt PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
user@host $echo 'eval "$(pyenv init -)"' >> ~/.zshrc
```
設定ファイルを読み込むためにターミナルを再起動するかコマンドを実行します。
```:terminal.app
user@host $source .zshrc
```
最後にpyenvが無事インストールされていることを確認してください。
```:terminal.app
user@host $pyenv -v
pyenv 2.3.2
```
## pythonをインストールする
いよいよpythonをインストールしていきます。
まずはインストール可能なバージョン一覧を確認しましょう。
```:terminal.app
user@host $pyenv install --list
```
いっぱい出てくると思うのでその中からインストールするバージョンを決めましょう。
今回はPython 3.10.5をインストールします。
インストールの前に後のwarningに対応します(私は一回入れ直しました)
```:terminal.app
user@host $brew install xz
```
気を取り直してインストール。
```:terminal.app
user@host $pyenv install 3.10.5
```
バージョンを切り替えてインストールしたpythonを使えるようにします。
```:terminal.app
#ユーザ全体で設定
user@host $pyenv global 3.10.5
#フォルダ内で設定
user@host $pyenv local 3.10.5
```
pythonのバージョンが無事切り替わっていることを確認。
```:terminal.app
python -V
Python 3.10.5
```
(おまけ)pyenvで現在設定されているpythonと設定できるpythonの確認
```:terminal
user@host $pyenv versions
  system
* 3.10.5 (set by /Users/takayoshi/.pyenv/version)
```

## 終わりに
今回はHomebre、pyenvを経由してpythonをインストールしました。
誤字等あったらご指摘ください。
記事を参考にさせていただいた方々本当にありがとうございます。