2013年07月22日

Python 2.7.x, 3.2.x, 3.3.x IDLEのTcl/Tkバージョン警告の解決方法

Xcodeのバージョン変更に伴うHomebrew環境の再構築作業の一環としてPython開発環境も完全に再構築したが、その際にpythonとpython3のフォーミュラ情報を眺めていたら、下のようなメッセージが存在することに気がついた。
$ brew info python
.... ....
.... ....
.... ....
.... ....
To symlink "Idle" and the "Python Launcher" to ~/Applications
`brew linkapps`
.... ....
.... ....
.... ....
.... ....
$ brew info python3
.... ....
.... ....
.... ....
.... ....
To symlink "Idle 3" and the "Python Launcher 3" to ~/Applications
`brew linkapps`
.... ....
.... ....
.... ....
.... ....

これは何だろうと思いながら、試しに「brew linkapps」というコマンドを実行してみた。
$ brew linkapps
Linking /usr/local/Cellar/python/2.7.4/Build Applet.app
Linking /usr/local/Cellar/python/2.7.4/IDLE.app
Linking /usr/local/Cellar/python/2.7.4/Python Launcher.app
Linking /usr/local/Cellar/python3/3.3.1/IDLE 3.app
Linking /usr/local/Cellar/python3/3.3.1/Python Launcher 3.app
Finished linking. Find the links under /Users/yuhri/Applications.

すると、上のような実行メッセージが表示された後、ホームディレクトリ下の「アプリケーション」フォルダの中に下のようなアプリアイコンが追加された。
Python_2.7.4_and_3.3.1-brew_linkapps-Apps-SCShot2119-756x438
これらのアプリはGUI環境でPythonインタプリタを操作できるプログラムのようだ。試しにIDLEというアプリを起動してみたら、下のようなウィンドウが表示された。
Python_2.7.4-IDLE_Python_Shell-SCShot2106-511x450.png
ターミナルからCLI環境でPythonインタプリタを起動したときと同様に、このウィンドウの中で、Pythonスクリプトコードを入力して実行することができるみたいだ。

ただし、IDLEを起動すると必ず上の警告メッセージが表示される。この警告が意味しているのは、「Mac OS Xに標準で入っているApple版Tcl/Tkは動作が不安定なので、最新版をインストールすることを勧める」ということらしい。IDLEはTcl/Tkを利用しているプログラムなので、Tcl/Tkのバージョンをチェックして、このような警告を表示しているのだろう。IDLEの警告メッセージの中で示されている参考ページAにこの問題に関する詳しい情報が掲載されている。このページの情報によると、最新版のTcl/Tk(ActiveTcl)をMacへインストールすれば、この問題は解決できるそうだ。最新版のActiveTclは下のAtciveStateのサイトからダウンロードできるので、このサイトから最新版のActiveTcl(本記事投稿時の最新版は8.5.14)を入手して、Macへインストールした。

 ActiveTcl Downloads - Tcl for Windows, Linux and Mac | ActiveState

ActiveTclのインストールは簡単だ。入手したdmgファイルをマウントすると、その中にインストーラが格納されている。
ActiveTcl_8.5.14.0-Installing-SCShot2202-433x460.png
このインストーラを起動すると、下のようなウィンドウが開くので、後はこのウィンドウのガイドに従って操作を進めていけば良いだけ。
ActiveTcl_8.5.14.0-Installing-SCShot2203-620x440.png
ActiveTclのインストール後に既存のIDLEを起動したが、上の警告メッセージはまだ表示されていた。そこで、pythonフォーミュラを再インストールしてみた。
$ brew uninstall python
$ brew install python
$ brew linkapps

そうしたら、IDLEの警告メッセージは表示されなくなった。
Python_2.7.4-IDLE_Python_Shell-SCShot2215-511x450.png
IDLE 3でも同じ警告が表示されていたので、python3フォーミュラも再インストールした。すると、IDLE 3の警告メッセージも表示されなくなった。
$ brew uninstall python3
$ brew install python3
$ brew linkapps

なお、Mac OS X Lionの標準のTcl/TkはApple版Tcl/Tk 8.5.9だが、これにはIDLEのウィンドウ上で日本語入力ができない問題があるそうだ。IDLEの警告メッセージについてググっていたら、この問題が書かれている参考ページBを見つけた。実際に試してみたら、確かにIDLEでもIDLE 3でも日本語文字は入力できなかった。IDLEやIDLE3で日本語を含むPythonスクリプトコードを入力したい場合は、ActiveTclをインストールするしかないようだ。

ただし、ActiveTcl 8.5.14には既知の問題があって、Python 2.7.3以前またはPyhton 3.3.0以前と組み合わせて使用した場合に、IDLE/IDLE 3の[Preferences]メニューを開くと、アプリが勝手に終了してしまう現象が発生する(参考ページBにはActiveTcl 8.5.13で発生する現象と書かれているが、ActiveTcl 8.5.14でも同じ現象が起きることを確認した)。この現象の解決方法も上のページに載っている。以下のコマンドを実行して、既存のconfigDialog.pyを修正済みのソースと置き換えてしまえば、この現象は解決するそうだ。
Python 2.7.3の場合

$ wget http://hg.python.org/cpython/raw-file/71adf21421d9/Lib/idlelib/configDialog.py
$ cp configDialog.py /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/idlelib

Python 3.3.0の場合

$ wget http://hg.python.org/cpython/raw-file/c412ca9aa915/Lib/idlelib/configDialog.py
$ cp configDialog.py /usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/lib/python3.3/idlelib

実際にHomebrewでPython 2.7.3とPyhton 3.3.0をインストールして、上のページに掲載されている情報のとおりであることが確認でた。

【参考ページ】

  1. IDLE and tkinter with Tcl/Tk on Mac OS X
  2. Mac OS-X で Idleの日本語入力


タグ:python Homebrew
posted by とみやん at 02:10| Comment(0) | TrackBack(0) | 開発・プログラミング > Mac
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/71206386

この記事へのトラックバック