MacOSにPythonをインストールする

Python

macOSにPythonをインストールする手順の備忘録。pyenvでバージョン管理を行えるようにする。GUIアプリを使いたいのだけど、tkinterのバージョンが上がらなくてハマった。

環境
  • Apple M1
  • macOS Ventura 13.4

事前準備

brew install xz

pyenvのインストール

brew install pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

pythonのインストール

pyenv install 3.9.7

pythonのバージョン指定

(ローカルのプロジェクトのバージョンを指定する)

pyenv versions
pyenv local 3.9.7

仮想環境の作成

python -m venv .venv
source .venv/bin/activate

PySimpleGUIのGUIアプリ表示の問題

PySimpleGUIを使ったGUIアプリのウィンドウが正常に表示されなかったので原因を調べると、tkinterのバージョンが8.5だからということが判明。ここからtkinterを8.6に更新しようとして沼にハマっていくことになる。

tkinterのアップデート

brew install tcl-tk

tkinterのバージョン確認

Homebrewでは8.6.13になっているのに、Pythonを実行すると変わらず8.5のまま。

brew info tcl-tk
==> tcl-tk: stable 8.6.13 (bottled)
Tool Command Language
Tcl Developer Site
Conflicts with: page (because both install `page` binaries) /opt/homebrew/Cellar/tcl-tk/8.6.13_2 (3,064 files, 53.1MB) * Poured from bottle using the formulae.brew.sh API on 2023-06-02 at 16:40:08 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/tcl-tk.rb License: TCL ==> Dependencies Required: openssl@1.1 ✔ ==> Caveats The sqlite3_analyzer binary is in the `sqlite-analyzer` formula. ==> Analytics install: 55,810 (30 days), 6,693 (90 days), 887,211 (365 days) install-on-request: 21,837 (30 days), 1,732 (90 days), 215,005 (365 days) build-error: 521 (30 days)

Pythonの再インストール

pythonを再インストールしても変わらず。

pyenv uninstall 3.9.7
pyenv install 3.9.7

Pythonのビルド時にtcl-tkのパスを指定

${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \
      "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" $CONFIGURE_OPTS --with-tcltk-includes='-I/opt/homebrew/opt/tcl-tk/include' --with-tcltk-libs='-L/opt/homebrew/opt/tcl-tk/lib -ltcl8.6 -ltk8.6' ${!PACKAGE_CONFIGURE_OPTS} || return 1

その後pythonを再インストールしても変わらず。
結局3.9.7では何をしてもtcl-tkが8.5のままで8.6に上がらなかった。

python --version
Python 3.9.7

python
Python 3.9.7 (default, Jun  2 2023, 17:14:58)
[Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tkinter.TclVersion, tkinter.TkVersion
(8.5, 8.5)
>>>


しかし、python 3.11.3をインストールしたらすんなり8.6にあがった。

python --version
Python 3.11.3

python
Python 3.11.3 (main, Jun  2 2023, 17:23:55) [Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tkinter.TclVersion, tkinter.TkVersion
(8.6, 8.6)
>>>
結論

なぜ3.9.7ではtcl-tkが8.6に上がらなかったのかは不明なまま。ただ、3.11.3でも問題ないので、今回はこれで良しとします。

この記事を書いた人

PHPが好物な個人開発プログラマ。フリーランスエンジニアとしてWebサービス作ったりしてます。15年の経験を生かしてMENTAでメンターもやってます。WordPressやPHPでお困りのことがあればご相談に乗りますのでDMください。

Follow on SNS
Python
SOHO MIND

Comments

タイトルとURLをコピーしました