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

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

$ brew install python3
$ python3 --version
Python 3.7.7


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

$ brew unlink python

$ brew install --ignore-dependencies
$ 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 のインストールが必要です。

    File "/private/var/folders/x9/xxx/T/pip-install-amimhs0g/Pillow/", 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/", 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:

  ERROR: Failed building wheel for Pillow