Category 雑記 Update 2019.11.13
macOS Catalinaにアップグレードし、pyenv(python 3.7.4)上でtkinterを利用した所、
ImportErrorが発生し実行できませんでした。
ImportError: No module named '_tkinter’ tk.h version (8.6) doesn't match libtk.a version (8.5)
下記を参考に試行錯誤したのですが、
https://murabitoleg.com/mac-tkinter/
対話型で
import tkinter as tk
はできるのですが、
root = tk.Tk()
で利用しようとするとエラー。。
下記により解決
https://github.com/pyenv/pyenv/issues/1375
まずはbrewからtcl-tkを導入
$brew install tcl-tk
すると/usr/local/opt/tcl-tk/辺りに入る
tcl-tkのパスを個別に指定してあげる方法。
pyenv環境でおそらくPythonをインストール際に利用するpython-buildをエディタで編集。
(編集前にcpでバックアップをしておくと安心)
python-buildの場所
~/.pyenv/plugins/python-build/bin/python-build
私の環境だと775行目辺りに
$CONFIGURE_OPTS ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1
↓
$CONFIGURE_OPTS --with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6' ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1
に書き換える
改めて
$pyenv install 3.7.4
完了後、念の為ターミナルを再起動し、
python -m tkinter
さらにpythonコマンドで対話型に移動し
import tkinter as tk root = tk.Tk()
でエラーが出なければ成功!
私は小心者なので、python-buildを元に戻して完了!
半日悩みました。