macOSでpythonを使えるようにした

### 背景

macOS BigSurでpythonをつかおうとおもった。
（CuteRというコマンドを使いたかった：[CuteRでQRコード画像をつくった](https://qiita.com/hann-solo/items/fe0e031b3d0b5be7e0cd)）

ところが、`pip`をつかうと

```bash
$ pip install
dyld: Library not loaded: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python
  Reason: image not found
Abort trap: 6
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184128/7b517b19-6c42-5061-92b0-2fa46e806a67.png" width=50%>

となってしまう。

`$ python3`でもおなじ。

### 基本的な方向性

macOS環境のPython：https://www.python.jp/install/macos/index.html

によると

- macOSに入っている`python`を使おうとするな
- `Homebrew`でインストールせよ
- `pip3`でなくて`python3.9 -m pip xxx`とせよ
- `venv`など仮想環境で動かせ

ということだそう。ここでは、上の３つまでやってみた。


### 作業ログ

`$ brew update`すると、まずは`git - C ...`をせよとのお達し。

```bash
$ brew update
Error: homebrew-core is a shallow clone. To `brew update` first run:
  git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
```

まずは`fetch`して、`$ brew update`

```bash
$ git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
remote: Enumerating objects: 690418, done.
remote: Counting objects: 100% (690359/690359), done.
remote: Compressing objects: 100% (233146/233146), done.
remote: Total 680792 (delta 450632), reused 674814 (delta 444788), pack-reused 
Receiving objects: 100% (680792/680792), 271.20 MiB | 14.34 MiB/s, done.
Resolving deltas: 100% (450632/450632), completed with 7510 local objects.
From https://github.com/Homebrew/homebrew-core
   baf6aab591..b293a33dd8 master     -> origin/master

$ brew update
```

pythonのインストール。

```bash
$ brew install python
Warning: python@3.9 3.9.1_3 is already installed, it's just not linked
You can use `brew link python@3.9` to link this version.
```

入っているらしい。リンクすればいいのね。

```bash
$ brew link python@3.9
Linking /usr/local/Cellar/python@3.9/3.9.1_3... 
Error: Could not symlink bin/2to3
Target /usr/local/bin/2to3
already exists. You may want to remove it:
  rm '/usr/local/bin/2to3'

To force the link and overwrite all conflicting files:
  brew link --overwrite python@3.9

To list all files that would be deleted:
  brew link --overwrite --dry-run python@3.9
```

ふむ、`rm`して`brew link`ね。

```bash
$ rm '/usr/local/bin/2to3'
$ brew link --overwrite python@3.9
Linking /usr/local/Cellar/python@3.9/3.9.1_3... 25 symlinks created
```

これをしたけど、

```bash
$ pip install 
$ python3
```

とすると、また冒頭と同じエラー。そうではなくて


```bash
$ python3.9
Python 3.9.1 (default, Dec 28 2020, 11:25:16) 
[Clang 12.0.0 (clang-1200.0.32.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
```

いけたー！　ということで、下記サイトを参考にして`pip`を試す。
https://www.python.jp/install/macos/pip.html


```bash
$ python3.9 -m pip install pillow
Collecting pillow
  Downloading Pillow-8.0.1-cp39-cp39-macosx_10_10_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 3.7 MB/s 
Installing collected packages: pillow
Successfully installed pillow-8.0.1
WARNING: You are using pip version 20.3.1; however, version 20.3.3 is available.
You should consider upgrading via the '/usr/local/opt/python@3.9/bin/python3.9 -m pip install --upgrade pip' command.
```

といわれるので、御意。

```bash
$ python3.9 -m pip install --upgrade pip
Requirement already satisfied: pip in /usr/local/lib/python3.9/site-packages (20.3.1)
Collecting pip
  Downloading pip-20.3.3-py2.py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 6.2 MB/s 
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.3.1
    Uninstalling pip-20.3.1:
      Successfully uninstalled pip-20.3.1
Successfully installed pip-20.3.3
```

上記サイトに従って、いったんpillowはアンインストール


```bash
$ python3.9 -m pip uninstall pillow
Found existing installation: Pillow 8.0.1
Uninstalling Pillow-8.0.1:
  Would remove:
    /usr/local/lib/python3.9/site-packages/PIL/*
    /usr/local/lib/python3.9/site-packages/Pillow-8.0.1.dist-info/*
Proceed (y/n)? y
  Successfully uninstalled Pillow-8.0.1
```

これでよいのだな。

### 感想

- 「macOSに入っている`python`を使わない」というのがめちゃくちゃシンプルでスッキリした
- ここでは書かなかったけれど、「`venv`を使う」というのもシンプルで、すごくスッキリした
    - 使用例は「[CuteRでQRコード画像をつくった](https://qiita.com/hann-solo/items/fe0e031b3d0b5be7e0cd)」をご参照
    - むかしは`pyenv`がどうのこうので、ぐちゃぐちゃになってしまったツラい想い出が


### リソース

macOS環境のPython：https://www.python.jp/install/macos/index.html
macOS環境のPython - pip ：https://www.python.jp/install/macos/pip.html

ほとんど↑に書いてある。この記事はいわば「つくれぽ」。


### 環境

Python 3.9.1 (Dec 28 2020, 11:25:16)
macOS BigSur バージョン 11.1
MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)