🦔
venvでtkinterを使おうとして詰まった話
環境
- 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