【Mac】完全初期化状態からPython3実行環境を作る

# はじめに

こんにちは、koki1992です。今回はPython3の実行環境を、完全に初期化済みのMac上に構築します。
たまにですが、OSのバージョンによって若干インストール手順が違ったり、画面がちょっと違ったりといったりということで、初心者の方々は戸惑うことがあると思います。
一応現時点での最新のOS上に環境を構築したので、特に今年パソコンを買ってもらい、プログラミングにチャレンジしようとしている新入生とかは、この記事を読みながら、戸惑わずに環境構築にチャレンジできると思います。

# 実行環境
OS:Mojave 10.14.6
PC:MacBookAir 11-inch Early 2015

以下の操作は、インターネットのつながった状態で行ってください。よろしくおねがいします。

# 手順の概要
以下の順番で作業を行います。

* ターミナルを起動させる
* Homebrewをインストールする
* Homebrewを使ってPython3をインストールする
* Python3の仮想環境を構築する

# 1.ターミナルを起動させる。
まずはターミナルを起動させてみましょう。
アプリケーションや、ファイルを探すときに「Spotlight検索」を利用するととても便利です。
ショートカットキーを使ってみます。
今手元のコマンドキーとスペースキーを同時に押してください。
当方のPCはUSキーボードなので配列が若干違いますが、写真を用意しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/059a9bda-0276-3132-0d39-00911b966937.png)

そうすると、以下のような画面が出てくるので、ここに「ターミナル」と打ち込み、ターミナルを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/2012a6a3-4b91-6be4-6668-15b310e65f07.png)

初期設定によって変わりますが、背景が黒か白のターミナル画面が表示されると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/7839d148-ed62-ac92-3d4c-90535b3bda9e.png)

#  ２．Homebrewをインストールする
Homebrewは、macOS用のパッケージ管理システムです。これを入れておくと、ソフトウェアのインストールやパッケージのインストールを楽に行うことができます。
早速やってみましょう。

まずはSafariをクリックして、「brew」と検索します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/27d046c3-c937-9162-6853-9470bd5b1dad.png)


すると、一番上にHomebrewのサイトが表示されると思います。これをクリックしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/27ff7387-244a-2d9b-68eb-19419795846e.png)


サイトを表示できたら、次にページ中央部にある「インストール」と書かれている部分の下に存在するスクリプトをコピーしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/95650b34-6b97-9ebd-4c11-94b795cb31a2.png)


これをターミナルに貼り付けます。そして、「エンターキー」を押してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/28bbc1bf-58c5-4e18-121b-7ac729e32ea5.png)


うまくいった方の画面では、ターミナル上を文字が走り始めたと思います。
プログラム始めた頃は、この画面を見るだけでワクワクしていたものです（笑）

途中でパスワードの入力を求められたり、エンターキー（RETURNキー）を押すことを求められたりします。ターミナルの文字に従いましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/e7482b2d-d4c2-0dfb-3c90-d913e618d026.png)


インストールにはしばらく時間がかかります。

。。。さて、終わったでしょうか？

# ３．Homebrewを使ってPython3をインストールする
Pythonには２系と３系が存在します。
３のほうが新しいのですが、Macにもともと入っているPythonは２系です。
そこで３系をインストールしていきたいと思います。

ここでさっそくHomebrewが仕事をしてくれます。
Homebrewを起動させるためには、「brew　ほにゃらら」と入力します。
今回の場合、先程のターミナルの画面から

```shell
brew install python3
```

と入力しましょう。
するとさっきと同様にターミナル上を文字が走り始めます。さっきと同様、時折ターミナルに表示される要求（エンターキー押せとかパスワード入力しろとか）には素直に従いつつ、完全にインストールされるのを待ちます。

。。。終わったでしょうか？

# ちゃんとインストールされているかを確かめる。
ターミナル画面に

```shell
python
```

とだけ入力してみます。
するとpythonが起動されるのですが、ちょっとおかしなことに気がつくと思います。
こんな画面になっていませんか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/f6f8851c-ea78-4c27-890e-104f4d9b0d48.png)



```shell
Python 2.7.16 (default, Nov  9 2019, 05:55:08)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
```

何故かPythonが2.7.16となっています。
これは、MacにもともとインストールされているPythonが起動されたことを意味しています。
これでは困るので、３系のPythonを起動させてみましょう。
と入っても、まずはこの変な画面（インタラクティブモードって言います）から脱出する必要があります。

落ち着いて、「exit()」と入力します。

```shell
Python 2.7.16 (default, Nov  9 2019, 05:55:08)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
```

エンターキーを押すと、もとの画面に戻ってくることとができます。
次に同じ画面に

```shell
python3
```

と入力しましょう。
僕の画面だとこのようになりました。

```shell
Python 3.7.7 (default, Mar 10 2020, 15:43:03) 
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
```

今度はちゃんと3.7.7というバージョンのPythonが起動できたと思います。

# ４．Python3の仮想環境を構築する

さっきの画面で再び「exit()」と押してもとに戻ってきてください。

ここまででも良いのですが、せっかくなのでPython3の仮想環境を構築してみましょう。

## 【Question】わざわざ仮想環境を構築する意味はあるの？

「仮想環境を作るなんてめんどくさい」と思った方もいるかもしれませんが、仮想環境構築には様々なメリットがあります。

まず、開発の際のパッケージやモジュールのバージョンを、仮想環境ごとに切り替えられることです。
これからプログラミングを楽しんでいく過程で、githubなどで、いろいろなコードを読み、試しに自分のPC上で動かしてみる、ということがあるかもしれません。
しかし、プログラムによって、推奨されているパッケージやモジュールのバージョンが違うことがあります。
古いバージョンのパッケージやモジュールじゃないと動かない、とか、新しいバージョンのパッケージやモジュールが必要だ、とか。
１つの環境下で同一の名前のパッケージやモジュールは１つしか存在できないわけで、バージョンの違うパッケージやモジュールも共存することはできません。（さっきのPythonも、pythonの３系を呼び出すときにpython3と入力していましたが、これも同系統の問題と言えるでしょう）。
同一環境で、違うバージョンのパッケージやモジュールを使ったプログラムを動かすためには、その都度、そのプログラムにあったバージョンのパッケージやモジュールをインストールし直すことが必要になる場合があり、これは非常に面倒かつ無駄の多い作業です。
動かしたいプログラム毎に仮想環境を作ってしまえば、その仮想環境にインストールされたパッケージやモジュールが使われるので、動かしたいプログラム毎に仮想環境を切り替えれば、上述のような面倒な作業から開放されるでしょう。
また、仮想環境で仮に致命的な失敗をしても、その仮想環境自体を廃棄し、別の新しい仮想環境を作り直せばよいだけなので、この点においても理にかなっています。
もとの環境に直接環境を構築してしまうと、こうはうまくいかない可能性があります。
僕も最初、通常環境にpython3の環境を構築していたのですが、かなーり苦戦しました。
おとなしく仮想環境を構築することを推奨します！

すみません、ちょっと脱線しました(；´∀｀)

# 仮想環境構築再開

それでは環境を構築していきましょう。といっても、あまり難しいコマンドを打つ必要はありません。
今回はホームディレクトリ（この言葉の意味は解説しないので、わからなったら検索してください）に戻ります。
おそらく、みなさんホームディレクトリにいると思うのですが、一応ターミナル上で、

```shell
cd
```

とだけ入力し、エンターキーを押してください。
cdは、change directoryの略です。

これで確実にホームディレクトリに戻ってこれたと思うので、次にここに仮想環境を構築していきたいと思います。
今回はpy3venvという名前で仮想環境を作っていきます。もし気に入らなければ別の名前にしていただいても構いません。

以下のように入力し、エンターキーを押しましょう。

```shell
python3 -m venv py3venv
```

数秒〜十数秒で、環境構築が終了します。
ここから仮想環境を起動させていきます。以下のように入力します。ポイントは文頭にピリオドを打つことと、その間に半角スペースを挟むことです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625013/b9bcfc3f-d60d-5845-a1b8-bff4912f436f.png)


```shell
koki1992noMacBook-Air:~ koki1992$ . py3venv/bin/activate #ここポイント！
(py3venv) koki1992noMacBook-Air:~ koki1992$ 
```

すると、私の環境だと（py3venv）koki1992noMacBook-Air:~ koki1992$ となりました。
さっきの環境だと、（py3venv）の部分がなかったですよね？このカッコの部分が確認できれば、仮想環境構築が成功したと言えるでしょう。おめでとうございます！

ためにし、ターミナルから

```shell
python
```
と入力します。「python3」ではありません。すると

```shell
(py3venv) koki1992noMacBook-Air:~ koki1992$ python
Python 3.7.7 (default, Mar 10 2020, 15:43:03) 
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

```


さっきは２系のPythonが起動されましたが、今度はちゃんと３系が起動されました。もとの環境では、pythonというと、２系と３系の２種類があり、苦肉の策で「python3」とバージョン名をくっつけることで棲み分けていました。仮想環境下ではそんなの必要ありません。仮想環境下では、「python」とはpythonの３系のことのみを指すからです。

例えば、ある学校に「田中太郎」と「田中次郎」がいるとします。全校集会で「田中」と呼べば２人呼びかけに反応してしまいます。そこで、その学校では全校集会において、「田中次郎」のことをわざわざ「田中次郎」と呼び、「田中太郎」はただの「田中」と呼ぶことにしました。例えるならこんな感じでしょうか。。。

最後に仮想環境を閉じてみましょう。
まずインタラクティブモードをexit()で閉じた後、以下のように入力します。

```shell
(py3venv) koki1992noMacBook-Air:~ koki1992$ deactivate
koki1992noMacBook-Air:~ koki1992$ 
```

先程の行頭の（py3venv）が消えて、仮想環境起動前の状態に戻りました。
お疲れさまでした。以上で、Python3実行環境の説明を終了します。
なにか間違い・アドバイス等あれば、コメントいただけると幸いです。
最後までご覧いただき誠にありがとうございました＼(^o^)／