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 解决方案

  • 暂时没遇到,遇到再补充....
相关推荐
肖永威1 小时前
Python多业务并行计算框架插件化演进:从硬编码到动态注册
python·插件化·并行计算·动态注册
yz_aiks1 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
不知名的老吴1 小时前
线程的生命周期之线程“插队“
java·开发语言·python
xsc6996752 小时前
从零搭建大模型与智能体平台 - 完整技术详解
python
无风听海4 小时前
多租户系统中的 OIDC:Discovery 端点与联合登录的深度实践
后端·python·flask
CTA终结者4 小时前
期货量化主力换月程序怎么移仓:天勤 underlying_symbol 与任务切换
python·区块链
马士兵教育4 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
KaMeidebaby5 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
Cloud_Shy6185 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
天佑木枫5 小时前
15天Python入门系列 · 序
开发语言·python