近頃、pythonを勉強中なのですが、それは突然やってきました。
pythonの技術本に記載されているコードをコピーして実行したところ、tkinter が使えないではありませんか!そんなモジュールは無いと怒られます😓
『いやいや、そんなはず無いじゃん。面倒くせえなぁ、変な文字コードが入ったか🌝?』と思って色々修正してみたのですが 、エラーは解消されません。
困ったときのGoogle先生でエラーメッセージを調べたところ、Macでpython環境を使っていると遭遇する事象の様です。
解決手順が分かりましたので備忘録として残します。
また、解決にあたり下記のサイトを参考にさせて頂きました。
【Python】tkinterのアップデート失敗した備忘録【インポートエラー】 | 科学のメモ帳
本記事は Homebrew と pyenv の環境を想定しています。
構築手順を知りたい方は以下の記事からどうぞ。
spacegeek.hatenadiary.com
目次
Tcl/Tkのインストール
Hombrewからtcl-tkのパッケージをインストールします。
% brew install tcl-tk
python-buildを修正
python-buildというファイルの中身を書き換えます。
まずは、pyenvのバージョンを調べます。
% pyenv --version pyenv 1.2.27
次にFinder上で、shift + command + G と入力します。
そうすると、ディレクトリパスを入力するポップアップが開きます。
ここで先ほど調べたバージョンを元に以下のようなパスを入力します。
/usr/local/Cellar/pyenv/version/plugins/python-build/bin/
該当のディレクトリが開くと、python-build というファイルがあるので、これを適当なエディタで開きます。(私は、CotEditorを使いました。)
ファイルを開いて、782行目に
-with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'
という文字列を追加します。
変更前
$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