macOSにPythonをインストールする手順の備忘録。pyenvでバージョン管理を行えるようにする。GUIアプリを使いたいのだけど、tkinterのバージョンが上がらなくてハマった。
事前準備
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)
>>>
Comments