一、简介
-
使用
tkinter生成页面的时候报错:perlTraceback (most recent call last): File "/Users/xxx/Desktop/Project/python/duanju_python_pczs/gui.py", line 20, in <module> import tkinter as tk File "/Users/xxx/.pyenv/versions/3.11.0/lib/python3.11/tkinter/__init__.py", line 38, in <module> import _tkinter # If this fails your Python may not be configured for Tk ^^^^^^^^^^^^^^^ ImportError: dlopen(/Users/xxx/.pyenv/versions/3.11.0/lib/python3.11/lib-dynload/_tkinter.cpython-311-darwin.so, 0x0002): Library not loaded: /opt/homebrew/opt/tcl-tk/lib/libtk8.6.dylib Referenced from: <E1D3F9E7-858B-3AC7-9D7B-9827F56D3FEF> /Users/xxx/.pyenv/versions/3.11.0/lib/python3.11/lib-dynload/_tkinter.cpython-311-darwin.so Reason: tried: '/opt/homebrew/opt/tcl-tk/lib/libtk8.6.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/tcl-tk/lib/libtk8.6.dylib' (no such file), '/opt/homebrew/opt/tcl-tk/lib/libtk8.6.dylib' (no such file), '/opt/homebrew/Cellar/tcl-tk/9.0.2/lib/libtk8.6.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/tcl-tk/9.0.2/lib/libtk8.6.dylib' (no such file), '/opt/homebrew/Cellar/tcl-tk/9.0.2/lib/libtk8.6.dylib' (no such file) -
原因是:
当前的
Python是用pyenv装的,但系统里没有它期望版本的tcl-tk (8.6),只装了tcl-tk 9.x,导致_tkinter动态库加载失败。
二、Mac 解决方案
-
使用
brew搜索$ brew search tcl-tk并安装brew install tcl-tk@8 -
配置环境变量
sh$ open ~/.zshrc不推荐是
/opt/homebrew/Cellar/tcl-tk@8/目录下的,推荐使用/opt/homebrew/opt/tcl-tk@8/目录下的:shexport PATH="/opt/homebrew/opt/tcl-tk@8/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/tcl-tk@8/lib" export CPPFLAGS="-I/opt/homebrew/opt/tcl-tk@8/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/tcl-tk@8/lib/pkgconfig"报错后执行:
sh$ source ~/.zshrc -
然后需要重装
python版本,⚠️ 不重装 Python 是没用的,_tkinter是编译期决定的sh$ pyenv uninstall 3.11.0 $ pyenv install 3.11.0当然也有临时补丁方案,配置的环境变量不同,但是不能一劳永逸。
-
重新安装好后,重新运行项目即可。

二、Windows 解决方案
- 暂时没遇到,遇到再补充....