macOS pyenv環境でtkinterが動かないので、再度インストール
2020.08.09
この記事は最終更新日から1年以上が経過しています。
PythonのGUI パッケージである「tkinter」をMacのpyenvでインストールしたPythonで利用しようとところ、Macデフォルトのversion8.5読み込んでしまい、こちら問題があり以下のエラーが出てしまう。
ImportError: No module named '_tkinter’ tk.h version (8.6) doesn't match libtk.a version (8.5)
Homebrewの「tcl-tk」パッケージは、8.6のようだがパスやら通っていない。
調べるところ、ビルドし直し パス通せば行けそう。
だが、ビルドソースを変更しないで再ビルドを行いたい。
と言うことで、Homebrewで「tcl-tk」パッケージインストールし、ビルドし直す手順です。
Homebrew tcl-tkインストールしpathを通す
Homebrewで「tcl-tk」パッケージインストール
$ brew install tcl-tk
8.6がインストールされているか確認。
brew info tcl-tk tcl-tk: stable 8.6.10 (bottled) [keg-only] Tool Command Language https://www.tcl-lang.org /usr/local/Cellar/tcl-tk/8.6.10 (3,036 files, 51MB) ...
こんな感じで表示されればオッケー。
元々使っていた、pyenvのPython3.7.0を一旦アンインストール。
$ pyenv uninstall 3.7.0
以下のコマンドで、パスを通しつつ再インストール。
$ env \ PATH="$(brew --prefix tcl-tk)/bin:$PATH" \ LDFLAGS="-L$(brew --prefix tcl-tk)/lib" \ CPPFLAGS="-I$(brew --prefix tcl-tk)/include" \ PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" \ CFLAGS="-I$(brew --prefix tcl-tk)/include" \ PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I$(brew --prefix tcl-tk)/include' --with-tcltk-libs='-L$(brew --prefix tcl-tk)/lib -ltcl8.6 -ltk8.6'" \ pyenv install 3.7.0
全体で使用するPythonをバージョン3.7.0に再設定。
$ pyenv global 3.7.0
tkinterが起動するか確認。
$ python -m tkinter
立ち上がった!
ubuntuでtkinter開発していたが、Macでも出来て良かった。