🦔

venvでtkinterを使おうとして詰まった話

2023/03/07に公開

環境

  • Mac mini(M1)
    • Venture 13.1
  • Python
    • ホスト:3.11.2
    • venv:3.10.10

解決策

バージョンに合ったpython-tkを入れる。

brew install python-tk@3.10

問題

ホストとバージョンの違うPythonをvenvで動かしている際。tkinterが次のエラーを出して困っていた。

Traceback (most recent call last):
  File "/opt/homebrew/Cellar/python@3.10/3.10.10_1/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 187, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/opt/homebrew/Cellar/python@3.10/3.10.10_1/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 146, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/opt/homebrew/Cellar/python@3.10/3.10.10_1/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 110, in _get_module_details
    __import__(pkg_name)
  File "/opt/homebrew/Cellar/python@3.10/3.10.10_1/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 37, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'

これ自体は、Macでtkinterを使おうとしたら誰でも遭遇するエラーで、ググると解決策もたくさん出てくる。
このコマンドや、

brew install tcl-tk

このコマンド。

brew install python-tk

ホストとvenvのバージョンが同じ時

ホスト:Python 3.11.2
venv:Python 3.11.2
上手く行った。

ホストとvenvのバージョンが違う時

ホスト:Python 3.11.2
venv:Python 3.10.10
エラーを吐く。

解決策

冒頭でも述べた通り
venvのPythonのバージョンに合った、python-tkをインストールする。

brew install python-tk@3.10

Discussion