右も左もわからない初心者のPythonの【環境設定】まとめ

##**はじめに**
プログラミングのまったくの初心者が覚書として
そしてまたほかの初心者の方のお役に立てればと思い投稿させていただきました


###**環境構築とは**
環境構築とはすなわちお仕事をするときに作業スペースを整えること
新しいプロジェクトに必要な機材を導入したり、前回使っていた道具や書類は作業台から片付けて、今回の仕事に必要なものを持ってくる、そんなイメージ
とりあえずよくわからない人ははじめのうちはコピペで十分だと思います。(正直自分もよくわかってない)



###**前提**
- macOS High Sierra 10.13.4
- Python 3.6.5

下記のMacOS用パッケージ管理システムは四の五の言わずインストール

- pip
- Homebrew

pipはデフォルトで入ってるかと思います
インストールされていれば`$ pip --version`でバージョン確認ができる

Homebrewは[コチラ](https://brew.sh/index_ja.html)にアクセスをして
サイト上に書かれているコード`/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`をターミナルに打ち込みインストール
`$ brew --version`でバージョンを確認できればインストール成功

これで下準備はOK





###**仮想環境を設定**
仮想環境とは作業部屋のこと
Python2で仕事がしたいときは「A」のお部屋
Python３とDjangoを使用したいときは「B」のお部屋、というように仮想環境をその都度設定してあげれば部屋移動することによって環境が切り替わって便利
仮想環境を作成するのに使用するツールは

- pyenv
- virtualenv
- pyenv-virtualenv



だいたいみんなこれ使ってるみたい



##**pyenv**
PC内で異なるバージョンのPythonを管理するための**「バージョン管理ツール」**
`Python2`,`Python3`といった大枠だけでなく`2.4`・`2.4.1`・`3.2`といった細かいバージョンを指定できる

#####**pyenvインストール**
```python:
$ brew install pyenv
```
pyenvのバージョン確認

```python:
$ pyenv --version 
pyenv 1.2.4
```
これをターミナルログイン時に起動させる設定
ホームディレクトリにある隠しファイル（ドットファイル）の`.bash_profile`に下記を書き込みます

```text:.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
```
このあと.bash_profileファイルを抜けて`$ source ~/.bash_profile`とコマンドすることにより内容が反映される
このPATH設定には`.bash_profile`や`.bashrc`などいろいろと種類があるみたいでややこしいので
今はこれをやっておけば自動的に起動しますよ、っていう認識で次いきます

#####**pyenvで使用するPythonバージョンのインストール**
```python:
$ pyenv install -l #　インストール可能なバージョンを確認
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4 etc.

#　目的のバージョンをインストール
$ pyenv install 2.1.3
$ pyenv install 3.6.5

$ pyenv rehash #　新規インストールした後はこのコマンドを実行する必要があるそうです

#　インストールされたバージョンを表示
$ pyenv versions 
* system (set by /Users/shoshinsya/.pyenv/version) #　現在の位置に＊がついている
  2.1.3
  3.6.5
```
#####**バージョンの切り替え**
```python:
$ pyenv global 3.3.5
$ python -V
Python 3.3.5

# 特定のディレクトリ内のみ切り替えたい場合
$ mkdir xxx
$ cd xxx #　目的のディレクトリに移動
$ pyenv local 2.1.3
$ python -V
Python 2.1.3

$ cd
$ pyenv -V
Python 3.3.5 #　ディレクトリを抜けると　globalに戻る

# local設定を解除
$ pwd
/Users/pythonbeginner/xxx
$ pyenv local --unset
$ pyenv -V
Python 3.3.5 #　global設定が適応される
```

#####**バージョンの削除**
```python:
$ pyenv uninstall 2.1.3
pyenv: remove /Users/shoshinsya/.pyenv/versions/2.1.3? 
#　ここで　ｙ(yes)　と入力してエンターキー

$ pyenv versions #削除されているかを確認
  system
* 3.6.5 (set by /Users/shoshinsya/.pyenv/version) #2.1.3の表示がない
```


他にもコマンドがあるみたいだけど、これくらいで大丈夫だと思う



##**virtualenv**


Python環境を管理するための**「仮想環境管理ツール」**
上記の pyenv とちがう点は、同一バージョンの中でも異なる環境を設定できるところ
(なのでこれだけでも十分なのでpyenvは必要なし？)
#####**virtualenvインストール**
```python:
$ pip install virtualenv
$ virtualenv --version #　virtualenvのバージョン確認
15.2.0
```

#####**仮想環境の作成**
```python:
$ mkdir xxx  
$ cd xxx #　目的のディレクトリに移動

$ virtualenv yyy #　仮想環境作成
$ ls
yyy/

# 仮想環境"yyy"を有効化(activate)
$ source xxx/bin/activate
(yyy) $                 #　文頭にactivate　されている仮想環境名が表示される
(yyy) $ pip list        #　現在インストール済みパッケージを一覧表示する

Package    Version
---------- -------  
pip        10.0.1 
setuptools 39.1.0
wheel      0.31.0     

# 新たなパッケージインストール
(yyy) $ pip install django==1.10.3
(yyy) $ pip list

Package    Version
---------- ------- 
Django     1.10.3
pip        10.0.1
setuptools 39.1.0
wheel      0.31.0

# 仮想環境を無効化(deactivate)
(yyy) $ deactivate
$ pip list

Package    Version
---------- -------
pip        10.0.1
setuptools 39.1.0
wheel      0.31.0 #　元の環境に戻る
```


##**pyenv-virtualenv**



こちらは上記二つの合体版のような感じ？
ちなみにvirtualenvとpyenv-virtualenvは別物
#####**pyenv-virtualenvのインストール**
```python:
$ brew install pyenv-virtualenv
$ pyenv-virtualenv --version #　pyenv-virtualenvのバージョン確認
1.1.1
```

今回は.bash_profileに下記を書き込みます

```text:.bash_profile
eval "$(pyenv virtualenv-init -)"
```
忘れずに`$ source ~/.bash_profile`も

#####**仮想環境の作成**
```python:
$ pyenv versions #　現在インストールされているPythonバージョン
* system (set by /Users/shoshinsya/.pyenv/version)
  2.1.3
  3.6.5

#　仮想環境作成
$ pyenv virtualenv 3.6.5 aaa #　3.6.5のバージョンで"aaa_django"という名前の環境を作成
$ pyenv virtualenv 2.1.3 bbb #　2.1.3のバージョンで"bbb_flask"という名前の環境を作成

# 仮想環境を表示
$ pyenv virtualenvs
  aaa_django (created from /Users/shoshinsya/.pyenv/versions/3.6.5)
  bbb_flask (created from /Users/shoshinsya/.pyenv/versions/2.1.3)

$ pyenv versions # こちらでも確認できる
* system (set by /Users/shoshinsya/.pyenv/version)
  2.1.3
  3.6.5
  aaa_django
  bbb_flask
```
#####**環境の切り替え**
```python
#　pyenvと同様に切り替ればOK
$ pyenv global aaa_django
(aaa_djangi) $               #　文頭に環境名
(aaa_django) $ pip install django
(aaa_django) $ pip list      #　この環境でインストールされているパッケージを一覧表示する

Package    Version
---------- -------  
Django     1.10.3
pip        10.0.1
setuptools 39.1.0
wheel      0.31.0

# 特定のディレクトリ内のみ切り替えたい場合も同様
(aaa_django) $ mkdir xxx
(aaa_django) $ cd xxx
(aaa_django) $ pyenv local bbb_flask
(bbb_flask) $ pip list
$ pyenv local bbb_flask
(bbb_flask) $
(bbb_flask) $ pip install flask
(bbb_flask) $ pip list

Package    Version
---------- -------  
Flask      1.0.2             #　aaa_django環境ではないのでdjangoは入っていない
pip        10.0.1
setuptools 39.1.0
wheel      0.31.0

#　local解除も同様に $ pyenv local --unset 
```
#####**バージョンの削除**
```python:
#　これもpyenvと同様
$ pyenv uninstall aaa_django
pyenv: remove /Users/shoshinsya/.pyenv/versions/aaa_django? 
#　ここで　ｙ(yes)　と入力してエンターキー

$ pyenv versions #削除されているかを確認
* system (set by /Users/shoshinsya/.pyenv/version)
  2.1.3
  3.6.5
  bbb_flask
```
少々長めになってしまいました...

これらのツールを使えば新しいアプリケーションを製作したいときに、前と同じ環境下で作業したい場合やちがう環境で新しいパッケージを導入したい場合など、その都度目的にあった仮想環境を整えることができるようになります！
今回は以上です

(認識がまちがっている部分もあると思うのでそのときはどんどんツッコミお願いします）

##**参考**


- http://dackdive.hateblo.jp/entry/2015/12/12/163400