anacondaのtkinterが最新じゃない?

先日

『確かな力が身につくPython「超」入門』で勉強してみた感想・正誤表 - ぶれぶれなるままに

こんな記事を書いた。

この本の最後のサンプルコードを実行しようとすると、

objc[53791]: Class TKWindow is implemented in both /Users/user/.pyenv/versions/anaconda3-2.5.0/lib/libtk8.5.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
Segmentation fault: 11

というエラーが出て、実行できないという問題が発生した。 そもそもその前に、

python[1044:19431] setCanCycle: is deprecated.Please use setCollectionBehavior instead

というようなメッセージも出てきていて、なんじゃこりゃ?ということになった。

いろいろ調べたらなんとなく原因がわかったので、メモ。

でも解決策といえるものは発見できなかったので、誰か良い方法あったら教えてください。

python[1044:19431] setCanCycle: is deprecated.Please use setCollectionBehavior instead

ここを見る所によると、どうやらこのメッセージは、インストールしているanacondaに入っているtkinterのバージョンが古いことによる警告文であるらしい。ただ、基本的なtkinterの機能は使えるっぽい。

②objc[53791]: Class TKWindow is implemented in both /Users/user/.pyenv/versions/anaconda3-2.5.0/lib/libtk8.5.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.

これはどうやらMacのシステムに入っているtkinterのフレームワーク?みたいなものと、anacondaにインストールされているtkinterのバージョンが、使いたい機能に対応していなくて、どっちもベストの選択肢じゃないんだけど、、、とpythonが混乱している、らしい。

だから、anacondaにバンドルされているtkinterのバージョンが新しくなるまで待つ、のが必要らしい。

まとめ

①も②も結局tkinterが最新じゃない、ということらしい。

acondaじゃなくて普通に単体でインストールしたpythonではサンプルコードは動いたので、まぁ今回はこれくらいで、これ以上はまって時間を無駄にしないことにしました。