macos pyenv your Python may not be configured for Tk, No module named ‘_tkinter‘ 解决方法

异常信息

macos下通过pyenv安装的python, 在使用turtle库时提示 import _tkinter # If this fails your Python may not be configured for Tk,  ModuleNotFoundError: No module named '_tkinter' ,如下所示

Traceback (most recent call last):
  File "tom_jerry.py", line 1, in <module>
    import turtle
  File "/.pyenv/versions/3.12.5/lib/python3.12/turtle.py", line 101, in <module>
    import tkinter as TK
  File "/.pyenv/versions/3.12.5/lib/python3.12/tkinter/__init__.py", line 38, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
    ^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named '_tkinter'

出现这个异常的原因是python安装的时候当前电脑没有安装tk库,所以在安装python的时候也就不可能编译有tk库的功能。

解决方法:

先安装 tk 库,brew里面应该是 tcl-tk 这个包,  macport里面被分为了2个包 tcl,  tk , 安装好tk库后再将相应的lib, include, pkconfig路径增加到 LDFLAGS,CPPFLAGS,PKG_CONFIG_PATH环境变量中,这样在重新编译python时才能找到tk库。

brew安装tcl-tk库

brew install tcl-tk

tk库环境变量配置

~/.bash_profile中增加以下内容

# 编译python时能找到tcl-tk设置
export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"

# pkg-config找到tcl-tk的配置:
export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"

# 这个是tcl-tk的可执行文件添加到系统PATH (可以省略)
export PATH="/usr/local/opt/tcl-tk/bin:$PATH"

# tkinter显示设置
export DISPLAY=":0.0"

生效环境配置:  source ~/.bash_profile

 重新编译安装python

 最后一步就是卸载Python后重新编译安装python即可。 注意这里如果使用的是pyenv安装的python, 仅使用 pyenv uninstall  xxx 是不行的, 在执行了uninstall卸载后还必须到 ~/.pyenv/versions 文件夹下面删除对应的安装文件,之后在从新编译才行。

# 这里使用port来安装tk
sudo port install tcl tk tkimg sqlite3-tcl

# 使用pyenv卸载python
pyenv uninstall 3.12.5

# 删除python安装文件
rm -rf ~/.pyenv/versions/3.12.5

# 使用pyenv重新安装python
pyenv install 3.12.5

tk库测试

在执行了上面的3个步骤后,可以通过以下命令测试tk库是否安装配置成功

python -m tkinter -c 'tkinter._test()'

如下图,如果出现tk窗口,说明tk库和python的安装和配置成功! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tekin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值