IT系フリーランスの技術備忘録

日々の業務で学んだ事の覚書やフィードバックなど。たまに関係ない記事も。

WindowsでPythonのtkinterを使おうとしたら意外な理由でimportが出来なくて困りましたので解決法を書いておきます。

WindowsPythonを使う際、tkinerを使おうとしたら、下記のようなエラーが出て、import時にエラーになりました。

 

 

C:\python>python -m tkinter
Traceback (most recent call last):
File "C:\Users\Kentaro\AppData\Local\Programs\Python\Python37-32\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\Users\Kentaro\AppData\Local\Programs\Python\Python37-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\python\tkinter.py", line 1, in <module>
from tkinter import *
File "C:\python\tkinter.py", line 2, in <module>
from tkinter import ttk
ImportError: cannot import name 'ttk' from 'tkinter' (C:\python\tkinter.py)

 

原因を調べたら、とても意外な理由で、その理由とは、実行ファイル名を、"tkinter.py"にしていたからというののでした。

 

どうも、pythonは、importはローカルのパスから優先して行うようです。

 

同じ理由で、例え、実行ファイルでなくても、"tkinter.py"というファイルが、pythonのパス上に存在していたらエラーになります。

 

参考

teratailに同じ原因で悩んだ方の質問と回答があります。

Python 3.x - tkinterのttkがインポートできない(124534)|teratail

 

また、この質問の解決策にもありますが、pythonのimportについて、詳しく書かれたページは、こちらです。

qiita.com