pyenv 安装的 python 版本缺少 tkinter 报错 import _tkinter # If this fails your Python xxx

一、简介

  • 使用 tkinter 生成页面的时候报错:

    perl 复制代码
    Traceback (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/ 目录下的:

    sh 复制代码
    export 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 解决方案

  • 暂时没遇到,遇到再补充....
相关推荐
VidDown7 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频9 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林9 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
pride.li11 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook11 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
康小旺11 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
启观川12 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦12 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python
小羊没烦恼!12 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net
钱栈up13 小时前
扫完 3.5 万文件后,我发现了 521 组散落的同名文件
爬虫·python·数据分析