You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac VS Code全局Python3.8.9运行Tkinter报Tk弃用警告解决方法

问题根因

/usr/bin/python3是macOS系统内置的Python发行版,默认绑定苹果随系统预装的老旧Tcl/Tk 8.5框架。该框架从macOS Monterey版本开始被官方标记为废弃,且未对ARM架构的M1系列芯片做渲染适配,这就是触发弃用警告、程序界面显示异常的核心原因,和tkmacosx、Pillow等第三方依赖包无关——这也是你移除tkmacosx相关代码后异常仍然存在的原因。
你在/usr/local/bin路径下安装的Python 3.8.9绑定了新版Tcl/Tk 8.6分支,适配M1芯片渲染逻辑,所以运行程序完全正常。
注:系统内置Python受SIP(系统完整性保护)机制锁定,无法直接替换它绑定的Tk版本,强行修改会破坏系统依赖Python的内置功能,且系统更新后会直接覆盖修改内容。

修复方案(保留Python 3.8.9版本)

通过调整全局环境优先级,将你已经正常工作的/usr/local/bin下的Python 3.8.9设置为全局默认解释器,即可在不更换Python版本的前提下解决警告和界面异常问题,操作步骤如下:

  • 先验证本地Python的Tk绑定版本
    终端执行命令:
    /usr/local/bin/python3 -c "import tkinter; print(tkinter.TkVersion)"
    
    确认输出为8.6及以上版本,该版本无废弃警告、适配M1芯片渲染。
  • 调整Shell PATH优先级
    macOS 12默认使用zsh作为终端Shell,执行以下命令将/usr/local/bin设为最高优先级路径,确保全局调用python3时优先读取该路径下的正常版本:
    echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc
    
  • 验证配置生效
    终端执行:
    which python3
    
    确认输出为/usr/local/bin/python3后,重新运行你的Tkinter程序,弃用警告会消失,界面显示和你在VS Code中手动选择该解释器时的效果完全一致。
补充说明
  • 设置TK_SILENCE_DEPRECATION=1环境变量的方案,仅能屏蔽终端的警告文字,无法修复底层Tk框架的M1渲染兼容问题,不建议使用。
  • 配置完成后,VS Code、终端及其他全局调用Python 3.8.9的场景都会默认使用绑定新版Tk的版本,不需要再手动切换解释器路径。
  • 不要尝试关闭SIP修改/usr/bin路径下的系统内置Python,会带来系统稳定性风险。

内容的提问来源于stack exchange,提问作者darkmatter6384

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 02:21:15