python - 无法使用 pyenv 安装 : `Python may not be configured for Tk` `ModuleNotFoundError: No module named _tkinter' 运行 IDLE

标签 python macos tkinter python-idle pyenv

我最近花了几个小时制作 tkinter和 IDLE 在我的 pyenv 上工作Python 安装 (macOS)。

你为什么在这里?

  • 您使用 pyenv 管理 Python 版本macOS
  • ( 你想要 IDLE - Python 的开发环境 - 在你的 macOS 上工作
  • 或者你想要 tkinter模块工作 )

  • 怎么了?

    您收到以下错误之一:
  • Python may not be configured for Tkimport tkinter
  • import _tkinter # If this fails your Python may not be configured for Tk
  • RuntimeError: tk.h version (8.6) doesn't match libtk.a version (8.5)
  • ModuleNotFoundError: No module named '_tkinter'
  • 最佳答案

    这里是 分步指南使 IDLE 和 tkinter工作:

  • 安装tcl-tk与自制。在 shell 中运行 brew install tcl-tk
  • 在 shell 中运行 echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
  • 通过退出 Terminal 重新加载 shell应用程序或运行source ~/.zshrc
  • 重新加载后检查 tck-tk$PATH .运行echo $PATH | grep --color=auto tcl-tk .结果你应该看到你的 $PATH 内容为 tcl-tk突出显示
  • 现在我们从步骤 #1 的 Homebrew 输出中运行三个命令
  • 在 shell 中运行 export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
  • 在 shell 中运行 export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
  • 在 shell 中运行 export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"

  • 如果你的 Python 版本已经安装了 pyenv然后用 pyenv uninstall <your python version> 卸载它.例如。 pyenv uninstall 3.8.2
  • 设置python-build 使用的环境变量.在 shell 中运行 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'"注意:以后使用tck-tk与 Homebrew 一起实际安装的版本。发帖时8.6是实际的
  • 最后用 pyenv 安装 Python与 pyenv install <version> .例如。 pyenv install 3.8.2

  • 测试
  • 在 shell 中运行 pyenv global <verion that you've just installed>
  • 现在检查空闲。在 shell 中运行 idle .您应该会看到没有任何警告的 IDLE 窗口和“以红色打印的文本”。

  • IDLE window run from Terminal. No warnings
  • 现在检查 tkinter .在 shell 中运行 python -m tkinter -c "tkinter._test()" .您应该会看到如图所示的测试窗口:

  • tkinter test window
    就是这样!
    我的环境:
    检查执行上述步骤是否出现问题:
  • macOS 卡塔利娜
  • zsh (包含在 macOS Catalina 中)= 上面的“壳”
  • Homebrew(使用 Homebrew 官网的说明安装)
  • pyenv (安装 Homebrew 和 PATH 根据 pyenv 来自 GitHub 的官方自述文件更新)
  • python 3.8.x - 3.9.x (使用 pyenv install <version> 命令安装)
  • 关于python - 无法使用 pyenv 安装 : `Python may not be configured for Tk` `ModuleNotFoundError: No module named _tkinter' 运行 IDLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61870688/

    相关文章:

    python - 如何打印包含 unicode 字符的变量?

    带有私有(private) jre/jdk 的 Android Studio IDE?操作系统

    python - 可以用 tkinter pack 按照我想要的方式设计 GUI

    python - 使用 tkinter 创建椭圆形的流畅运动

    python - 如何在 tkinter 的后台运行一个函数

    python - 需要帮助在不使用 lambda 的情况下重写 Python 函数

    python - 如何使用 Pandas 将字典列表分组为子列表?

    python - 是否有一个 python 库用于将两个值的条件表示为矩阵/表?

    c++ - 使用 libstdc++ 在 Homebrew 中安装 OpenCV 3

    macos - 如何将 AppleScript 脚本返回列表中的值分配给 Automator 中的变量?