【Python】環境構築〜確認フローメモ（Mac、anyenv、Anaconda、VSCode）

## 概要
Python導入の情報が散在していて、自分なりに集約した環境構築メモが欲しかったので整理。

### Python導入の3大方法
＜参考＞の動画にて3大方法が紹介されていた。
自分は、1.でDocker使ってないです。

1. OSにインストール
2. Dockerを使ってインストール
3. Google Colaboratory

>＜参考＞↓キノコードさんの動画
> [【徹底解説】Macでの環境構築｜Pythonでプログラミングをはじめる準備をしよう！](https://youtu.be/1FxhleEex8s)


## 前提知識
下記についてそれぞれかじった程度の知識があること。

* brewとは？
* zshとは？
* anyenv（およびpyenv）とは？
* Pythonとは？
* Anacondaとは？
* VSCodeとは？


## 環境
* MacOSCatalina10.15.〜
* ターミナルはzsh
* anyenv（およびpyenv）
* anaconda3-2020.02（導入時の最新安定版のAnaconda）
* Python3.7.6（anaconda3-2020.02に入ってたバージョン）
* VSCode

※Anacondaを導入した理由は、いろんなライブラリがセットで入っていて便利そうだったからというだけで、特に深い理由はないです。


## 0.環境構築〜確認フロー
1. ターミナル（zsh）からコマンドでPythonインストール
2. VSCodeの設定
3. チェック用コードでターミナル、VSCodeそれぞれの動作確認

## 1.ターミナル（zsh）からコマンドでPythonインストール
自分は、以下の方法でインストール。

1. anyenvをbrewでインストール。
    * `brew install anyenv`
2. pyenvをanyenvでインストール。
    * `anyenv install pyenv`
3. Anaconda（anaconda3-2020.02）をpyenvでインストール（anaconda3-2020.02と一緒にPython3.7.6もインストールされる）。
    * `pyenv install -list`でインストールできるPython確認
    * `pyenv install anaconda3-2020.02`

### ターミナルの設定（.zshrc）
anyenvインストール後に、`eval "$(anyenv init -)"`を.zshrcに追記しただけで、Python用に別途何か行った設定はないです。

## 2.VSCodeの設定
### Python拡張機能の導入
https://marketplace.visualstudio.com/items?itemName=ms-python.python

### 読み込むPythonの選択
* MacにいろんなPython入っていてVSCodeが迷うので、自分が導入したAnacondaを読み込ませる。
* ↓画像赤枠部分で、PATHが"~/.anyenv/envs/pyenv/versions/anaconda3-2020.02/bin/python"のものを選択。
![Qiita_VSCode設定説明.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630111/7d69ce11-3ed1-f585-d8fc-17448f168b80.png)

## 3.チェック用コードでターミナル、VSCodeそれぞれの動作確認
* 下記コードを、ターミナル、VSCodeそれぞれで実行してみて、それぞれMac内のどこのPythonを読み込んでいるか確認する。
* コードだとプログラム実行時の環境を確認できるので、コマンドより確実かな？と思った（お手軽さはコマンドのほうが上だけど）。

```checkenv.py
from platform import python_version
import sys

print('【Python】')
print(python_version())
print('【sys.version】')
print(sys.version)
print('【sys.path】')
print(sys.path)
```

### ターミナルでの実行結果サンプル
```
{ユーザ名}@MacBook-Pro ~ % python
Python 3.7.6 (default, Jan  8 2020, 13:42:34)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from platform import python_version
>>> import sys
>>>
>>> print(python_version())
3.7.6
>>> print(sys.version)
3.7.6 (default, Jan  8 2020, 13:42:34)
[Clang 4.0.1 (tags/RELEASE_401/final)]
>>> print(sys.path)
['', '/Users/{ユーザ名}/.anyenv/envs/pyenv/versions/anaconda3-2020.02/lib/python37.zip', '/Users/{ユーザ名}/.anyenv/envs/pyenv/versions/anaconda3-2020.02/lib/python3.7', '/Users/{ユーザ名}/.anyenv/envs/pyenv/versions/anaconda3-2020.02/lib/python3.7/lib-dynload', '/Users/{ユーザ名}/.anyenv/envs/pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages', '/Users/{ユーザ名}/.anyenv/envs/pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/aeosa']
```

## ＜補足＞
導入後すぐに知っておいた方が良い知識。

### ＜補足1＞言語バージョン（2、3）による違い
Python2とPython3で書き方に違いがある、というのは認識しておいた方が良い。
ネットにあったサンプルを自前の環境で実行したら、バージョン違いで動かないことも。
**これから学ぶ場合は、3が良さそう（2は公式サポートが終了している）。**

>＜参考＞
>- [Python 2.7.x と 3.x の決定的な違いを例とともに](https://postd.cc/the-key-differences-between-python-2-7-x-and-python-3-x-with-examples/)
>- [【入門者必見】Python2と3、どっちを学習すべき？違いを徹底解説！](https://www.sejuku.net/blog/8988)
>- [2020年4月までにPython 3へ移行を - あと4カ月でPython 2サポート終了](https://news.mynavi.jp/article/20191223-943988/)

### ＜補足2＞Pythonの命名規則
命名規則も最初に知っておいた方が良い。
ファイル名は全部英小文字らしいです。
>＜参考＞
> - [Pythonのスクリプト（ファイル名）に関する命名規則を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/21093)
> - [Python命名規則一覧](https://qiita.com/naomi7325/items/4eb1d2a40277361e898b)