読者です 読者をやめる 読者になる 読者になる

けつあご日記

こんちは.菊地です.なんか浅ーいことをいろいろ書きます

Python: turtleが使えない! @Windows7 "_tkinter.TclError: Can't find a usable init.tcl in the following directories"

Python

環境:Windows7(64bit), Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32

おっはー

Pythonのturtleモジュールって使ったことないので,やってみようと思ったんです.ターミナルから

import turtle
turtle.Turtle()

とすると新しいウィンドウが立ち上がり,亀太郎が出てくるとのことだったのでやってみたら,エラー出ました.

Tcl/Tkライブラリのpathがおかしくなっていたようです.メモしておきます.

ターミナルに表示されたエラーメッセージは以下の通りです.

bash-3.1$ python -i
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win          32
Type "help", "copyright", "credits" or "license" for more information.
>>> import turtle
>>> turtle.Turtle()
Traceback (most recent call last):
  File "", line 1, in 
  File "c:\Python27\lib\lib-tk\turtle.py", line 3703, in __init__
    Turtle._screen = Screen()
  File "c:\Python27\lib\lib-tk\turtle.py", line 3552, in Screen
    Turtle._screen = _Screen()
  File "c:\Python27\lib\lib-tk\turtle.py", line 3568, in __init__
    _Screen._root = self._root = _Root()
  File "c:\Python27\lib\lib-tk\turtle.py", line 458, in __init__
    TK.Tk.__init__(self)
  File "c:\Python27\lib\lib-tk\Tkinter.py", line 1745, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, want          objects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
    C:/raxwish/lib/tcl8.0 C:/raxwish/lib/tcl8.5 c:/Python27/lib/tcl8.5 c:/lib/tc          l8.5 c:/lib/tcl8.5 c:/library c:/library c:/tcl8.5.2/library c:/tcl8.5.2/library

C:/raxwish/lib/tcl8.0/init.tcl: version conflict for package "Tcl": have 8.5.2,           need exactly 8.0
version conflict for package "Tcl": have 8.5.2, need exactly 8.0
    while executing
"package require -exact Tcl 8.0"
    (file "C:/raxwish/lib/tcl8.0/init.tcl" line 18)
    invoked from within
"source C:/raxwish/lib/tcl8.0/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly.

赤くハイライトしたところを見ると,"init.tcl"というファイルを読み込めませんよとのこと.その下を見ると,ディレクトリがpythonらへんを参照していません.

ともかく,init.tclというファイルをうまく読み込めるようにすればいいはずです.
qiita.com
こちらを参考にして,環境変数を書き換えました.


システム環境変数を見てみると,

TCL_LIBRARY => C:/raxwish/lib/tcl8.0
TK_LIBRARY => C:/raxwish/lib/tk8.0
TIK_LIBRARY => C:/raxwish/lib/tix4.1.0

となっています.pythonのpの字もありません.raxwishはRigaku社のX線構造解析用のソフトウェアを入れるとインストールされるシェルですが,インストール時に環境変数が書き換えられたようですね.TCL_LIBRARYの変更だけでいいのかもしれませんが,これらすべて書き換えてしまいます.


pythonのライブラリの場所は僕の場合,

C:\Python27\tcl\tcl8.5
C:\Python27\tcl\tix8.4.3
C:\Python27\tcl\tk8.5

でした,これは人によって違うと思うので,適宜変えてください.

これらを,上の環境変数に加えればいいと思い,

C:\Python27\tcl\tcl8.5;C:/raxwish/lib/tcl8.0

のようにしたんですが,これだとだめで,raxwish由来のものを消してしまえばうまくいきました.

つまり,環境変数をpython由来のものだけに変更してしましました.もとの環境変数はメモ帳にでもバックアップしておけば安心ですね.
※追記 TIX_LIBRARYだけraxwishのやつにしておくと,pythonもraxwishも問題なく使えます.今のところはとくに不具合はありません.


以上の変更をして,ターミナルから始めに打ったコードをもう一度打つと..f:id:kichiku_kikuchi:20150327155809p:plain
ちゃんとウィンドウが立ち上がりました!


プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編
プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編