tkinterモジュールを呼んでも期待通りに動かない...
Pythonエンジニアとして今後たくさんの開発に携わりたいと考えてPythonを初めていざ、開発を行おうと参考書に基づいてtkinterモジュールを使用したアプリ制作を行おうと思いました。
しかしエラーが発生し、ウィンドウが開かない...
今までにPubyやPHPなどに触れてきたためエラーに直面することは慣れておりましたので早速エラーの内容を確認しようと思いました。
エラー文の一部には下記のような内容が書かれていました。
If this fails your Python may not be configured for Tk
しかしIDLEでは期待通りに動作するのにどうしてテキストエディタだと動作しないのか?
つまりわたしのPC(Mac)にTcl/Tkが内蔵されていないということだと思いました。
PATHの問題?
$ ls -al /usr/bin/wish*
$ which wish
$ echo 'puts $tcl_version;exit 0' | wish
$ echo $PATH
こちらをターミナルで試しその出力結果が下記になります!
ChisakinoMacBook-Pro:~ Chisaki$ ls -al /usr/bin/wish*
lrwxr-xr-x 1 root wheel 7 9 21 2018 /usr/bin/wish -> wish8.5
-r-xr-xr-x 1 root wheel 127 8 18 2018 /usr/bin/wish8.5
ChisakinoMacBook-Pro:~ Chisaki$ which wish
/usr/bin/wish
ChisakinoMacBook-Pro:~ Chisaki$ echo 'puts $tcl_version;exit 0' | wish
8.5
ChisakinoMacBook-Pro:~ Chisaki$ echo $PATH
/Users/Chisaki/.pyenv/shims:/Users/Chisaki/.pyenv/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Users/Chisaki/.pyenv/shims:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/opt/mysql@5.6/bin:/Users/Chisaki/.rbenv/shims:/usr/local/opt/mysql@5.6/bin:/usr/local/opt/mysql@5.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
古いバージョンのTcl/Tkが有効になっていたΣ(・□・;)
出力結果から新たにPythonをアンインストールして最新のtcl/tkが内蔵されるようにして、再びインストールを行うことを考えました。
$ pyenv uninstall 3.7.6
$ 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.6
$ pyenv global 3.7.6
上から順番にこれらを実行したところテキストエディタでtkinterモジュールを呼んで動作することが確認できました^_^