Tkinter:“Python 可能未针对 Tk 配置”[重复]
- 2025-02-10 08:57:00
- admin 原创
- 69
问题描述:
今天我想开始使用 Tkinter,但遇到了一些问题。
Python 3.2 (r32:88445, Mar 28 2011, 04:14:07)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/tkinter/__init__.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
那么,如何配置我的 Python 3.2 以与 Tkinter 一起工作?
解决方案 1:
适用于 Linux、Windows (WSL/Ubuntu) 和 MacOS 的解决方案
尝试了很多方法后,最终结果是这样的:
$ brew install python-tk
解决方案 2:
在 Arch/Manjaro 下只需安装包tk
:
sudo pacman -S tk
解决方案 3:
在构建 Python 之前安装tk-devel
(或类似名称的包)。
解决方案 4:
为了使其在 Ubuntu 16.04 和 18.04 上运行pyenv
,我必须:
$ sudo apt-get install python-tk python3-tk tk-dev
然后安装我想要的 Python 版本:
$ pyenv install 3.6.2
然后我就可以正常导入 tkinter 了:
import tkinter
解决方案 5:
根据http://wiki.python.org/moin/TkInter:
如果失败并显示“没有名为 _tkinter 的模块”,则需要修改 Python 配置以包含此模块(这是用 C 实现的扩展模块)。不要编辑Modules/Setup(它已过期)。您可能必须安装 Tcl 和 Tk(使用 RPM 时,还要安装 -devel RPM)和/或编辑 setup.py 脚本以指向安装 Tcl/Tk 的正确位置。如果您在默认位置安装 Tcl/Tk,只需重新运行“make”即可构建 _tkinter 扩展。
解决方案 6:
由于我暂时还不能发表评论,以下是我对另一篇文章的回答:
由于我仍在使用 python 3.9,因此此代码对我有用:
brew install python-tk@3.9
如果使用brew install python-tk
brew 将安装python-tk@3.10,它是 key-only
解决方案 7:
因此似乎很多人都遇到过这个问题(包括我),我发现错误在于编译 python 时我的系统上没有安装 Tkinter。
这篇文章描述了如何通过以下方式解决这个问题:
删除虚拟环境/python 发行版
安装 Tkinter
sudo apt-get install tk-dev
(对于 deb) 或sudo pacman -S tk
(对于 arch/manjaro)然后再次进行python的编译。
这对我来说非常有效。
解决方案 8:
如果你在 Linux 上使用https://asdf-vm.com/管理 python ,那么:
Fedora
$ asdf uninstall python 3.10.10
$ sudo dnf install tk-devel
$ asdf install python 3.10.10
Ubuntu
$ asdf uninstall python 3.10.10
$ sudo apt-get install tk-dev
$ asdf install python 3.10.10
苹果操作系统
$ asdf uninstall python 3.10.10
$ brew install python-tk
$ asdf install python 3.10.10
这是因为使用 asdf 安装 python 会导致它编译 python 核心的某些部分。如果某些东西当时不存在,那么它们就不会被包含/启用。因此您需要使这些东西存在,然后删除并再次安装 python。
解决方案 9:
python-tk
我也遇到了类似的问题。我通过在我的系统中安装解决了它。
Mac 的命令:brew install python-tk
。
解决方案 10:
在 Fedora 上使用 Python 2.7 时遇到了同样的问题。结果发现需要一些额外的软件包:
sudo dnf install tk-devel tkinter
安装软件包后,这个hello-world示例在 Python 2.7 上似乎运行良好:
$ cat hello.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
$ python --version
Python 2.7.8
$ python hello.py
通过X11转发,它看起来像这样:
请注意,在 Python 3 中,模块名称是小写的,并且可能需要其他包......
from tkinter import *
解决方案 11:
哦,我只是按照 Ignacio Vazquez-Abrams 建议的解决方案操作,即在构建 python 之前安装 tk-dev。(在 Ubuntu 16.04 上从源代码构建 Python-3.6.1。)
虽然我昨天已经构建了预编译的对象和二进制文件,但我没有清理这些对象,而是在相同的构建路径上重新构建。而且它运行良好。
sudo apt install tk-dev
(On the python build path)
(No need to conduct 'make clean')
./configure
make
sudo make install
就是这样!
解决方案 12:
sudo apt-get install python3-tk
解决方案 13:
安装 Tkinter
python -m pip install tk-tools
或者
sudo apt install python3-tk
代码
from tkinter import *
root = Tk()
root.title('My App')
# Code
root.mainloop()
解决方案 14:
现在我明白了 ubuntu 上发生了什么,
请按照以下步骤解决问题
检查你的 Python 版本
python3 --version
假设你有 Python 3.10
然后使用下面的命令安装 Python 版本的 Python-tk
sudo apt install python3.10-tk
如果你有 python3.8 那么很简单sudo apt install python{"use your python version here"}-tk
解决方案 15:
如果你使用Manjaro(Arch Linux),请在终端中运行以下命令
sudo pacman -S tk
解决方案 16:
我认为对此最完整的答案是在此处找到的可接受答案:
如何让 tkinter 与 Ubuntu 的默认 Python 2.7 安装一起工作?
我在解决这个问题上花了很长时间之后才找到答案,所以希望我可以为其他人省去麻烦。
我发现这个旧的错误报告被视为无效,其中提到了我遇到的确切问题,我有 Tkinter.py,但它找不到模块 _tkinter:http ://bugs.python.org/issue8555
我使用 apt-get 安装了 tk-dev 包,并在 Python2.7.3 目录中使用 ./configure、make 和 make install 重建 Python。现在我的 Python2.7 可以导入 Tkinter 了,耶!
我有点生气,因为 Python 安装文档中根本没有提到 tk-dev 包……下面是有关 Python 中缺少模块的另一个有用资源,如果像我一样,有人发现他们缺少的不仅仅是 _tkinter。
解决方案 17:
对于使用 Windows 和 Windows Subsystem for Linux 的任何人,请确保当您从命令行运行 python 命令时,它不会意外地从 WSL 运行 python 安装!这让我现在很头疼。您可以对此进行快速检查,如果即使您在 powershell 中也
which <python command you're using>
打印出类似的内容/usr/bin/python2
,那么可能就是发生了什么。
解决方案 18:
我在 python 2.7.9 上遇到了这个问题。
为了解决这个问题,我安装了 tk 和 tcl,然后重建 python 代码并重新安装,在配置期间,我通过以下方式明确设置了 tk 和 tcl 的路径:
./configure --with-tcltk-includes="-I/usr/include" --with-tcltk-libs="-L/usr/lib64 -ltcl8.5 -L/usr/lib64 -ltk8.5"
另外,还有一篇关于 Python 安装过程的完整文章:从源代码构建 Python
解决方案 19:
如果你在运行 Amazon Linux OS 的 AWS 实例上运行,那么对我来说解决这个问题的神奇命令是
sudo yum install tkinter
如果你想确定你的 Linux 版本,请尝试cat /etc/*release
解决方案 20:
当更高版本的 python(例如 2.7.13)与发布的 python 版本“一起”安装在 /usr/local/bin 中,并且后续的操作系统升级(例如,Ubuntu 12.04 --> Ubuntu 14.04)无法删除那里更新的 python 时,也会出现这种症状。
为了解决这种不兼容性,必须
a) 删除 /usr/local/bin 中更新的 python 版本;
b) 卸载 python-idle2.7;以及
c)重新安装python-idle2.7。
解决方案 21:
即使在安装了 python-tk、python3-tk 之后,我仍然收到错误,您的 python 没有为 Tk 配置。
所以我另外安装了 tk8.6-dev,然后我再次构建我的 Python,再次运行以下命令:make、make install。
当我这样做时,我看到屏幕上的消息表明它正在构建 _tkinter 和相关模块。完成后,我尝试“导入 tkinter”,它成功了。
解决方案 22:
就我而言,pyenv 已安装,但我没有意识到。安装正确版本后,我需要通过 pyenv 卸载并重新安装 python 版本来修复 tkinter 配置python3.x-tk
。