我最近花了几个小时让
tkinter
和 IDLE 在我的 pyenv
Python 安装(macOS)上工作。
你为什么在这里?
and上使用
pyenv
tkinter
模块工作)怎么了?
您收到以下错误之一:
Python may not be configured for Tk
在import tkinter
import _tkinter # If this fails your Python may not be configured for Tk
RuntimeError: tk.h version (8.6) doesn't match libtk.a version (8.5)
ModuleNotFoundError: No module named '_tkinter'
这里是分步指南使IDLE和
tkinter
工作:
tcl-tk
。在 shell 中运行brew install tcl-tk
echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
Terminal
应用程序或运行source ~/.zshrc
tck-tk
是否在$PATH
中。运行echo $PATH | grep --color=auto tcl-tk
。结果,您应该看到您的 $PATH 内容带有 tcl-tk
突出显示export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"
pyenv
安装了 Python 版本,则使用 pyenv uninstall <your python version>
将其卸载。例如。 pyenv uninstall 3.8.2
python-build
使用的环境变量。在 shell 中运行export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
注意:将来使用实际安装 Homebrew 的 tck-tk
版本。在发布的那一刻8.6
是实际的pyenv
和 pyenv install <version>
安装 Python。例如。 pyenv install 3.8.2
测试
pyenv global <verion that you've just installed>
idle
。您应该看到没有任何警告的 IDLE 窗口和“以红色打印的文本”。tkinter
。在 shell 中运行python -m tkinter -c "tkinter._test()"
。您应该会看到如图所示的测试窗口:就是这样!
我的环境:
检查执行上述步骤是否出了问题:
zsh
(包含在 macOS Catalina 中)= 上面的“shell”pyenv
(根据 GitHub 的pyenv
官方自述文件安装 Homebrew 和 PATH)3.8.x
- 3.9.x
(使用 pyenv install <version>
命令安装)不确定为什么以上内容对我不起作用。头痛数小时后的工作是:
$ brew install python-tk