macOS Mojave で Python 3.6 系をインストールする場合に,いつくかハマりどころがあったのでトラブルシューティングとして記事にしておきます。

brew で Python3 をインストールすると 3.7系がインストールされる

$ brew install python3
$ python3 --version
Python 3.7.7

あえて3.6にダウングレードする必要がない場合は完了になります。私の場合は特定のモジュールが3.7に対応しておらず,3.6にダウングレードする必要がありました。

明示的にバージョンを3.6.5に固定して brew install します。

$ brew unlink python

$ brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
$ brew switch python 3.6.5_1

$ python3 --version
Python 3.6.5

$ which python3

以上で,無事にPython 3.6 系のインストール完了です。


上記で解決できたのですが,pyenv を使って Python 3.6 にダウングレードする方法でも試したので残しておきます。ハマりどころは Mojave だとSDK Headers をインストールする必要があることです。

$ xcode-select --install

# optional, but recommended:
brew install openssl readline sqlite3 xz zlib

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

$ pyenv install 3.6.8

pyenv install のエラーログ

下記エラーが表示された場合は,SDK headers のインストールが必要です。

省略
.....
self.build_extensions()
    File "/private/var/folders/x9/xxx/T/pip-install-amimhs0g/Pillow/setup.py", line 582, in build_extensions
      raise RequiredDependencyException(f)  __main__.RequiredDependencyException: zlib

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/private/var/folders/x9/xxx/T/pip-install-amimhs0g/Pillow/setup.py", line 806, in <module>
      raise RequiredDependencyException(msg)  __main__.RequiredDependencyException:

The headers or library files could not be found for zlib,
  a required dependency when compiling Pillow from source.

Please see the install instructions at:
     https://pillow.readthedocs.io/en/latest/installation.html

----------------------------------------
  ERROR: Failed building wheel for Pillow

トラブルシューティング時の参考リンクは以下のとおりです。