解决mac上ModuleNotFoundError: No module named '_tkinter'问题

背景

之前在win上用tkinter上编写了一个工具,功能突然要扩展一下。由于现在切换到mac办公,git clone下代码后,创建python虚拟环境后,并pip install必要的第三方库后,运行竟然报错了。
这里记录下解决方案

解决方案

我的环境:用pyenv管理多版本python
报错:

......
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'

解决方案:

  1. brew install tcl-tk
  2. echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
  3. vim ~/.zshrc添加:
# 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"
# 当前为tck-tk为8.6,请以实际安装为准
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'" 

可进一步参看mac bigsur pyenv不能安装python

  1. source ~/.zshrc
  2. pyenv uninstall 3.9.0(如果之前安装过需要用的版本,先卸载)
  3. pyenv install 3.9.0

如果出现macOS 11 or later required ! 信息,请重复如上步骤

参考