🍏

MacのPython環境でtkinterを使えるようにする

2022/04/26に公開約2,200字

近頃、pythonを勉強中なのですが、それは突然やってきました。
pythonの技術本に記載されているコードをコピーして実行したところ、tkinter が使えないではありませんか!そんなモジュールは無いと怒られます😓
『いやいや、そんなはず無いじゃん。面倒くせえなぁ、変な文字コードが入ったか🌝?』と思って色々修正してみたのですが 、エラーは解消されません。

困ったときのGoogle先生でエラーメッセージを調べたところ、Macでpython環境を使っていると遭遇する事象の様です。解決手順が分かりましたので備忘録として残します。
また、解決にあたりこちらのサイトを参考にさせて頂きました。

本記事は Homebrew と pyenv の環境を想定しています。
構築手順を知りたい方はこちらをどうぞ。

なお、この記事はブログの過去記事をほぼそのまま転用した為、Zennで見づらい等ありましたらブログの方が分かりやすい?かもです。

Pythonのアンインストール

pyenv でPythonをインストールしていましたので、pyenvでPythonをアンインストールします。

% pyenv uninstall 3.8.5

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

Python再インストール

pyenv でPythonを再インストールし、pyenv versionsコマンドでPythonがインストールしたバージョンに設定されていることを確認します。

% pyenv install 3.8.5
% pyenv versions
  system
* 3.8.5 (set by /usr/local/var/pyenv/version)

tkinterの確認

import tkinter があるファイルを実行します。
エラーが出ずに実行できたら成功です。

Discussion

ログインするとコメントできます