Tkinter:“可能未为Tk配置Python”


76

今天,我想开始与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上使用最新的Python,那么使用预编译的二进制文件(例如ActivePython-包括Tkinter)将节省大量时间。
Sridhar Ratnakumar 2011年

2
每个Linux发行版都有一个官方的python软件包。除非您需要特定的内容,否则实际上不建议使用第三方二进制文件。也就是说,您可能是在python中支持Tk的一两个命令,但是我需要知道您正在运行哪种Linux。
疯狂袋熊

Answers:


32

根据http://wiki.python.org/moin/TkInter

如果失败并显示“没有名为_tkinter的模块”,则需要修改您的Python配置以包括此模块(这是用C实现的扩展模块)。难道不是编辑模块/设置(这是过时的)。您可能必须安装Tcl和Tk(使用RPM时,也要安装-devel RPM)和/或编辑setup.py脚本以指向安装Tcl / Tk的正确位置。如果在默认位置安装Tcl / Tk,只需重新运行“ make”即可构建_tkinter扩展名。


1
您如何编辑setup.py脚本?您如何重新制作?我正在尝试在Mac上执行此操作,发现我应该只退回Mac并获得Windows机器。
Drew Rush

3
就我而言,这是由升级引起的tk。它仅由所使用matplotlib,并且可以绕过它:stackoverflow.com/a/4935945/1959808
Ioannis Filippidis

setup.py位于python的源代码目录中
dasons

2
我的计算机中大约有50个setup.py文件,哪个是正确的文件?
logic1976

90

在Arch / Manjaro下,只需安装软件包tk

sudo pacman -S tk

9
完善!我得到Manjaro而这个固定的错误是:ImportError: libtk8.6.so: cannot open shared object file: No such file or directory
DearVolt

如何在窗户上回合?
lone_coder

46

tk-devel在构建Python之前安装(或类似名称的软件包)。


23
在Ubuntu上运行'sudo apt-get install tk-dev',然后重新运行make
pycoder112358'1

1
@ pycoder112358:我做到了,但是ImportError: No module named _tkinter当我尝试导入tkinter时,它仍然告诉我。我使用从ubuntu 13.10上的源代码编译的python3.4.0。
2014年

7
什么tk-devel啊 您应该至少对为什么它在这种情况下有用的问题给出最少的解释。
nbro

7
作为对他人的评论,“构建Python之前”在这里很重要。安装模块时,您需要先重建python,然后才能找到模块。
mjp

21

为了pyenv在Ubuntu 16.04和18.04上使用它,我必须:

$ sudo apt-get install python-tk python3-tk tk-dev

然后安装我想要的Python版本:

$ pyenv install 3.6.2

然后我可以导入tkinter:

import tkinter

4

在带有Python 2.7的Fedora上也有同样的问题。原来需要一些额外的软件包:

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转发,看起来像这样:

X11的Hello World

请注意,在Python 3中,模块名称为小写字母,并且可能需要其他软件包...

from tkinter import *

sudo:dnf:找不到命令(我是ubuntu,这有什么区别吗?)
mjp

2

哦,我刚刚遵循了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

而已!


2

我在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


1

我认为对此最完整的答案是在此处找到的公认答案:

如何使tkinter与Ubuntu的默认Python 2.7安装配合使用?

在花了太多时间解决这个问题后,我想出了办法,因此希望我可以省去别人的麻烦。

我发现这个旧的错误报告被认为是无效的,其中提到了我遇到的确切问题,我有Tkinter.py,但是找不到模块_tkinter:http ://bugs.python.org/issue8555

我使用apt-get安装了tk-dev软件包,并使用./configure、make和make install在Python2.7.3目录中重建了Python。现在我的Python2.7可以导入Tkinter了,是的!

我有点不高兴,Python安装文档中根本没有提到tk-dev软件包....下面是关于Python中缺少模块的另一个有用资源,如果像我这样的人应该发现它们缺少的内容超过_tkinter。



1

对于使用Windows和Windows Subsystem for Linux的任何人,请确保从命令行运行python命令时,不要意外地从WSL运行python安装!刚才这让我很头疼。快速检查一下就可以做到,即使即使在Powershell中
which <python command you're using>
也能打印出类似/usr/bin/python2内容,这可能就是这种情况。


1

因此,似乎很多人似乎都遇到了这个问题(包括我),我发现错误是在编译python时,系统上未安装Tkinter。

这篇文章介绍了如何通过以下方法解决问题:

  1. 删除虚拟环境/ python发行版
  2. sudo apt-get install tk-dev(对于deb)或sudo pacman -S tk(对于arch / manjaro)安装Tkinter
  3. 然后再次编译python。

这为我创造了奇迹。


这是正确的解决方案,谢谢!我仍然不知道为什么最被高估的答案会让您经历很多麻烦,甚至没有解释怎么做,而简单的命令行却埋在底部...
tralph3

感谢您的客气话。希望其他人可能发现此线程比已完成的所有猜测工作更有用:/
Jakob Guldberg Aaes

0

当在发行版python版本的“ /”旁边的/ usr / local / bin中安装了更高版本的python(例如,2.7.13)并随后进行了操作系统升级(例如,Ubuntu 12.04)时,也会出现此症状。 -> Ubuntu 14.04)无法在那里删除更新的python。

要解决这种不兼容问题,必须

a)在/ usr / local / bin中删除python的更新版本;

b)卸载python-idle2.7; 和

c)重新安装python-idle2.7。


0

如果您在运行Amazon Linux OS的AWS实例上运行,则为我解决此问题的魔术命令是

sudo yum install tkinter

如果要确定您的Linux构建,请尝试 cat /etc/*release


如何在窗户上回合?
lone_coder

0

即使在安装python-tk,python3-tk之后,我也收到错误消息,您的python未配置为Tk。

因此,我另外安装了tk8.6-dev。然后再次构建我的Python,再次运行以下命令:make,make install。

当我这样做时,我在屏幕上看到消息,它正在构建_tkinter和相关模块。完成此操作后,我尝试了“导入tkinter”并成功了。


-3

需要为python3安装tkinter。

在Fedora上pip3 install tkinter --user返回Could not find a version that satisfies the requirement...所以我必须命令dnf install python3-tkinter。这解决了我的问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.