tkinter扩展未编译,并检测到GUI子系统。是否缺少Tk工具包?

4
我正在尝试在CentOS-7上安装Python-3.11.4(通过pyenv)。它安装成功,但没有图形界面。我收到以下错误信息:
Installing Python-3.11.4...
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/.../pyenv/versions/3.11.4/lib/python3.11/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'
WARNING: The Python tkinter extension was not compiled and GUI subsystem has been detected. Missing the Tk toolkit?
Installed Python-3.11.4 to /.../pyenv/versions/3.11.4

尽管 Python-3.9.16 在同一台机器上成功安装。根据《Python 3.11 构建变更》的要求,需要安装 "Tcl/Tk 版本 8.5.12 或更新版本"。我已经安装了。
$ rpm -q tk tk-devel
tk-8.5.13-6.el7.x86_64
tk-devel-8.5.13-6.el7.x86_64

同一页面上写道:“Tcl/Tk和uuid标志由pkg-config(如果可用)进行检测。现在,tkinter需要使用pkg-config命令来检测Tcl/Tk头文件和库的开发设置。” 这也已安装:
$ rpm -q pkgconfig
pkgconfig-0.27.1-4.el7.x86_64

请问您能帮我理解安装失败的原因是什么吗?我无法安装_tkinter模块。
非常感谢您的帮助!
1个回答

1
要在CentOS-7下成功构建Python-3.11.4,需要设置以下环境变量:
export CPPFLAGS="$(pkg-config --cflags openssl11) -I/usr/include"
export LDFLAGS="$(pkg-config --libs openssl11) -L/usr/lib64 -ltcl8.5 -ltk8.5"

需要openssl11部分用于_ssl模块,其余部分用于_tkinter模块。

构建带有Tk/Tcl的Python所需的部分已在找到。

  • /usr/lib64/tclConfig.sh
  • /usr/lib64/tkConfig.sh
要检查是否成功构建了tkinter,请按照以下步骤进行:
/path/to/python/3.11.4/bin/python3 -m tkinter

看起来,问题的根本原因是CentOS-7中的tcl和tk rpm软件包没有提供相应的pkg-config文件。
  • /usr/lib64/pkgconfig/tcl.pc
  • /usr/lib64/pkgconfig/tk.pc
而且,人们必须手动提供相应的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接