pythonでimport matpliotlib.pyplot
を実行したらModuleNotFoundError: No module named 'tkinter'
と言われたので、tkinterをインストールした話。
環境
OS : Windows 8.1 (64bit) > python --version # Python 3.7.4 import matplotlib print(matplotlib.__version__) # 3.1.1
ライブラリのインストールはpipを使っている。
発生事象
PowerShell上で pythonと打って対話モード(インタラクティブモード)で起動した。
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> >>> import matplotlib # これは正常にインポートできる >>> import matplotlib.pyplot Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\[Username]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\pyplot.py", line 2355, in <module> switch_backend(rcParams["backend"]) File "C:\Users\[Username]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\pyplot.py", line 221, in switch_backend backend_mod = importlib.import_module(backend_name) File "C:\Users\[Username]\AppData\Local\Programs\Python\Python37-32\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "C:\Users\[Username]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 1, in <module> from . import _backend_tk File "C:\Users\[Username]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\backends\_backend_tk.py",line 6, in <module> import tkinter as tk ModuleNotFoundError: No module named 'tkinter'
tkinterというモジュールをインポートしようとしたけど見つからない、と言っている。 対話モードを抜けてインストールしようとしたけど
> pip install tkinter Collecting tkinter Could not find a version that satisfies the requirement tkinter (from versions: ) No matching distribution found for tkinter
あれ。インストールできない。 適当に検索したら、「tkinter」の代わりに「python-tk」とか「python3-tk」を入れれば良さそうだったので試したけど、同じエラーになってしまう。
対処法
待てよ……tkinterってpythonをインストールするときに同時にインストールしてた気がする。
pythonのインストーラー(python-3.7.4.exe)を起動して、「Modify」を選択する。
あー。やっぱり、「tck/tk and IDLE (Installs tkinter and the IDLE develop environment.)」の項目にチェックが入ってなかった。
デフォルトだと「インストールする」のチェックが確か入ってたはずなので、このエラーに遭遇するのは自分でチェックを外した場合だけだ。
インストールの時、「このパソコンではそんなにpythonを使わないだろうから、小さめの構成にしよう」と考えたのだった。
tcl/tkなんて昔の言語じゃんと思ったし、tkinter(pythonでGUIを作成するときに使う)を使う予定もないかなと思ってチェックを外してしまった。まさかmatplotlibの内部で使っているとは思わなかったよ。
「tck/tk and IDLE」にチェックを入れて「Next」に進みそのままインストールした。
PowerShellの再起動もせず、そのままもう一度pythonの対話モードに入ってimport matpliotlib.pyplot
を実行したら、エラーが出ず無事に実行できた。
それでは。