djangoでテストウェブアプリを開発が終わってすぐにGUIアプリを作成しようと、pyenv(python 3.7.3)上でtkinterで早速作ろうとしたら
ModuleNotFoundError: No module named ‘Tkinter’
というエラーが出てしまい出鼻を挫かれてしまい、解決にも苦戦したので記録として解決方法を残します。
Table of Contents
原因
pyenvを使ったインストールしたpythonを使用していると発生するエラーのようで、pyenvのpythonはtkinter用に設定されていないためです。
解決した方法
大体は再インストールすれば解決するみたいですが、自分はそうは行かなかったので、いろいろ調べても英語で検索をかけても解決できずにネットの海を彷徨っていたら以下の方法があり試してみたらのうまく行った。
参考にしたサイト
https://github.com/pyenv/pyenv/issues/1375
/usr/local/Cellar/pyenv/1.2.13/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
に書き換える
ターミナルでpython再インストールし起動したら
import tkinter as tk
root = tk.Tk()
を入力したら画面が出てきたら成功です
試した解決方法
ダメもとでインストールしてみる
$ sudo apt-get install python3-tk
すでにインストールされているとエラーを返された
pyenvを再インストールしてみる
$brew reinstall pyenv
インストールが確認されたらそのままtcl-tkを以下のコードでインストール
brew install tcl-tk
そしたらpythonを入れ直しを行う自分の場合は変化がなかった。
これが再インストールを行ってもうまくいかないことがあったらぜひ試してみてください