EnvaderでPythonの環境構築を学んだのでmacOSで実践してみる(第2回)

## はじめに
はじめましてa-min3150です。エンジニアへの転職を目標に学習中です。
アウトプットのためEnvaderで学習したこと、ハマったことなどを書いていきたいと思います。

## 今回の学習内容
EnvaderでPythonの環境構築について学習したのでアウトプットします。

今回は第2回目でmacでの```pyenv```を使ったPythonのバージョン管理についてです。

第１回(Pythonとは)は[こちら](https://qiita.com/a-min3150/items/bf2e575668cc986dd5d9)
第３回(pipについて)は[こちら](https://qiita.com/a-min3150/items/6d1c9b7b3b4cd5039f39)
第４回(venvについて)は[こちら](https://qiita.com/a-min3150/items/6211b80617d00284a081)
第５回(virtualenvについて)は[こちら](https://qiita.com/a-min3150/items/76ab94d98b1292e1c8f7)
第６回(requirements.txtの使い方)は[こちら](https://qiita.com/a-min3150/items/c51e5090353e10b4df91)
第７回(git cloneの使いた)は[こちら](https://qiita.com/a-min3150/items/bf8d062a3ab474523e7d)

## 前回までは・・・
[前回](https://qiita.com/a-min3150/items/bf2e575668cc986dd5d9)は'''Homebrew'''を使ったPython3系のインストール方法とPythonの対話モードについて紹介をしました。
この方法では
Python「2系」の使うときは```python```

```
python -V
Python 2.7.10
```
Python「３系」を使うときは```python3```
```

python3 -V
Python 3.10.2
```
Pythonを「２系」か「３系」を使うかによってコマンドを変えなければなりません。
これは煩わしいので```python```コマンドだけで指定したバージョンを動かせるようにしたのが```pyenv```コマンドになります。

## pyenvとは？
- pythonのバージョンを切り替えを簡単にしてくれるツールです。
- pythonの2系と3系を切り替えたり、ディレクトリごとにバージョンを切り替えることもできます。

## pyenvのインストール
まずはpyenvのインストールを行います。今回はgitから持ってきてインストールします。
```
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
```
## パスを通す
インストールしただけではパスは通らないので、パスを通していきましょう。

パスを通すにはbashrcを編集します
```
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
```
コピーして一つずつ実行していきましょう。

もしくは、vimを使用して直接書き込むこともできます。
```
$ vim ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
export PATH="$PYENV_ROOT/shims:$PATH"
eval "$(pyenv init -)" 
```
ご自身の環境で行ったときにエラーが起きた場合は eval "$(pyenv init --path)" としてください
最後にsourceコマンドで保存しましょう.
```
$ source ~/.bashrc
```
## バージョンの確認
インストールできるPythonのバージョンの確認をしましょう。

pyenv install --list とすることでインストール可能なバージョンの一覧を表示することができます。
```
$ pyenv install --list
Available versions:
  3.x.x
  3.y.y
	3.z.z
	....
```

## 指定したバージョンのインストール
インストールをする時は pyenv installの後にPythonのバージョンを指定します。
```
$ pyenv install 3.x.x
$ pyenv install 3.y.y
```
## pyenvでバージョンの切り替え
バージョンの切り替えを行います。バージョンの切り替え全体に反映される globalと現在いるディレクトリのみに反映される localの2種類があります。それぞれをlocalかglobalどちらかを指定し、バージョンを指定することでバージョンの切り替えを行うことができます。

- **global** はシステム全体で使うバージョンを変えたいときに使用。

- **local** はプロジェクトごとで違うバージョンを使いたいときに使用。
```
$ pyenv local 3.x.x
$ pyenv global 3.y.y
```
では切り替えができているか確認しましょう。 python --versionで現在いるディレクトリのバージョンを確認することができます。
```
$ python --version
# localなら
Python 3.x.x 
# globalなら
Python 3.y.y
```
ちゃんと表示されているでしょうか。

または、 pyenv versionsコマンドで、バージョンが切り替わっているか確認しましょう。
```
$ pyenv versions
  system
* 3.x.x 
  3.y.y
$ python --version
# localなら
Python 3.x.x 
二つとも同じバージョンが指定されていたら切り替えができていることになります。
```

## まとめ
今回は「macでPythonの環境構築しよう」をテーマにした第２回目で```pyenv```について紹介しました。

pyenvの手順は４段階で

1. gitでインストール
1. bashrcを編集しパスを通す
1. バージョンのインストール
1. global、localでバージョンの切り替え

開発するときによく使うツールですので、簡単な使い方だけでも覚えておきましょう。

次回は[「```pip```コマンド」について](https://qiita.com/a-min3150/items/6d1c9b7b3b4cd5039f39)解説します。

## 引用サイトなど
- Envader(エンベーダー):https://envader.plus/
- コース一覧:https://envader.plus/course
- Python環境構築コース:https://envader.plus/course/8
- 今回解説したコースシナリオ:https://envader.plus/course/8/scenario/1076