1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonでtkinterを使用するときにハマった件

Last updated at Posted at 2018-08-31

python3でidle3を使うと、次のようにTcl/Tkのバージョンが不安定(非推奨)とメッセージが出る。

WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.

調べてみると、idle3が突然、落ちたりすることもあるらしい。
pythonのTcl/Tk使用時に呼ばれるpythonのライブラリと、そのライブラリが依存するTcl/Tkのライブラリを調べてみる

$ python3 -c "import _tkinter; print(_tkinter.__file__)"
/Users/tsuji/anaconda/lib/python3.6/lib-dynload/_tkinter.cpython-36m-darwin.so
$ otool -L $(python3 -c "import _tkinter; print(_tkinter.__file__)")
/Users/tsuji/anaconda/lib/python3.6/lib-dynload/_tkinter.cpython-36m-darwin.so:
/System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.9)
/System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.9)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
$ otool -L /Users/tsuji/anaconda/lib/python3.6/lib-dynload/_tkinter.cpython-36m-darwin.so
/Users/tsuji/anaconda/lib/python3.6/lib-dynload/_tkinter.cpython-36m-darwin.so:
/System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.9)
/System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.9)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
*python -c は""内のPythonコードを実行します
*otool -L は使用しているフレームワークを出力します

どうも、/System/Library/Frameworks を参照しているらしい。
Tcl/Tkのサードパーティ版の最新ActiveTcl8.6.6をインストールすると、
/Library/Frameworks/ 以下の Tcl.framework/ と Tk.framework/ が更新された。
/System/Library/Frameworks以下は更新されていない。
/System/Library/Frameworks以下はAppleが提供するFrameworkのみ設置が可能らしい。
なので、bashでデフォルトで参照するフレームワークのライブラリを、
/System/Library/Frameworks から /Library/Frameworks/ に変えてみる。
.bash_profileに次を追加

export DYLD_FRAMEWORK_PATH="/Library/Frameworks"

idle3を使うと、まだTcl/Tkのバージョンが不安定(非推奨)とメッセージが出る。

/Library/Frameworks/ 以下の Tcl.framework/ と Tk.framework/ を8.6.6から8.5.18に変えて、再インストール。

Python 3.6.1 |Anaconda custom (x86_64)| (default, May 11 2017, 13:04:09)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "copyright", "credits" or "license()" for more information.

やっと、警告が消えた。
どうも、python3.6.1はTcl/Tk8.6には対応していないらしい。

参考サイト:
Re: Getting IDLE to use correct Tcl/Tk on MacOSX 10.6?
Cocoaの日々

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?