pyenvでpython環境構築

# さあPython入れっか。

と思い立ったので
MySQL勉強用に立ててたcentosの仮想環境にpythonぶちこモーって思ったので備忘録

今まではanacondaポーン入れて、jupyter notebookでカリカリカリって勉強してたけど
要るわ。
って思いました。



## まずはpyenvのインストール！

（そもそもpyenvって何？）
（簡単な話、Pythonのバージョンを切り分けて運用できますよ的なツール。rbenvからの影響）

とりあえずリポジトリをクローン

```zsh
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
```

そしてパス通しておいて


```zsh
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
```

バージョン確認、と。

```zsh
$ pyenv --version
pyenv 1.2.14-8-g0e7cfc3b
```


ハイハイ、順調順調。

## んじゃあ、Python入れっか。

とりあえずデフォで何が入っているか見ておいて

```zsh
$ python --version
Python 2.7.5
```

ほうほう、で
pyenv君は今何が入れられるの？

```zsh
$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  2.4.2
  2.4.3
  2.4.4
・・・
  3.7.4
  3.7.5
  3.7.5rc1
  3.8.0
  3.8-dev
  3.9-dev
  activepython-2.7.14
・・・
(めっちゃ長い)
```

ふーん、やるやん？
じゃあとりあえず新しいやつを、、、

```zsh
$ pyenv install  3.8.0
Downloading Python-3.8.0.tar.xz...
-> https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
Installing Python-3.8.0...

BUILD FAILED (CentOS Linux 7 using python-build 1.2.14-8-g0e7cfc3b)

Inspect or clean up the working tree at /tmp/python-build.20191021131652.2819
Results logged to /tmp/python-build.20191021131652.2819.log

Last 10 log lines:
    return _bootstrap(
  File "/tmp/python-build.20191021131652.2819/Python-3.8.0/Lib/ensurepip/__init__.py", line 119, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/tmp/python-build.20191021131652.2819/Python-3.8.0/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
  File "<frozen zipimport>", line 241, in load_module
  File "<frozen zipimport>", line 709, in _get_module_code
  File "<frozen zipimport>", line 570, in _get_data
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] エラー 1
```

いつものごとくエラー。
初学者はここからが戦いの始まりであり
インストールである？


## zlibありませんやん。



```zsh
Results logged to /tmp/python-build.20191021131652.2819.log
```
ってあるからとりあえずここ見にいく。
必要もなく

```zsh
zipimport.ZipImportError: can't decompress data; zlib not available
```
zlibありませんやん。
そういえば依存パッケージとかなんも確認してないので
[pyenv公式wiki](https://github.com/pyenv/pyenv/wiki)で確認。

```zsh

$ yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel
```

おし、あと何か違和感あるなーって思ってたんで


前に何か違和感を感じていて、参考にしていたいくつかの記事を見返すと
そもそもパス俺あれ、bashじゃなないし、zshだし、、、

```zsh
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ source ~/.zshrc
```

修正

## そしてもう一度インストール

```zsh
$ pyenv install  3.8.0
・・・
Installed Python-3.8.0 to /home/vagrant/.pyenv/versions/3.8.0
```

よし、と。

あとはこのversion使いますよーって指定

```zsh
$ pyenv global 3.8.0
```

ちなみに、特定のディレクトリだけに適用したいんならglobalのとこをlocalにするオプションもあるんだとか。
作業ディレクトリ以下にバージョンが設定されるからglobalよりも優先されるとか。


で、確認。


```zsh
$ python --version
Python 3.8.0
```



たいへんよくできました。







## 参考にさせていただきました。

https://qiita.com/1000ch/items/93841f76ea52551b6a97
https://qiita.com/Kodaira_/items/feadfef9add468e3a85b

今回は使わなかったけどMojavaにあげたときはこんなこともあったとか
[[MacOS Mojave]pyenvでpythonのインストールがzlibエラーで失敗した時の対応]
(https://qiita.com/zreactor/items/c3fd04417e0d61af0afe)