Tkinter:“Python可能没有configuration为Tk”
今天我想开始与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
那么我怎样才能configuration我的Python 3.2与Tkinter一起工作呢?
根据http://wiki.python.org/moin/TkInter :
如果以“No module named _tkinter”失败,则需要修改Pythonconfiguration以包含此模块(这是用C实现的扩展模块)。 不要编辑模块/设置(它是过时的)。 您可能需要安装Tcl和Tk(在使用RPM时,也要安装-devel RPMs)和/或编辑setup.py脚本以指向安装Tcl / Tk的正确位置。 如果在默认位置安装Tcl / Tk,只需重新运行“make”就可以生成_tkinter扩展名。
在构buildPython之前安装tk-devel
(或者一个类似命名的包)。
在Arch / Manjaro下安装包tk
:
sudo pacman -S tk
在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 *
我认为最完整的答案是在这里find的答案:
如何让tkinter使用Ubuntu的默认Python 2.7安装?
我花了太多的时间在这个问题上花费了太多的时间,所以希望我能省去别人的麻烦。
我发现这个旧的错误报告被认为是无效的,提到我遇到的确切问题,我有Tkinter.py,但它找不到模块_tkinter: http ://bugs.python.org/issue8555
我使用apt-get安装了tk-dev软件包,并在Python2.7.3目录中使用./configure,make和make install来重buildPython。 现在我的Python2.7可以导入Tkinter,耶!
我有点愤怒的是,在Python安装文档中根本没有提到tk-dev软件包….下面是另外一个有用的关于在Python中缺less模块的有用资源,如果像我一样,有人应该发现他们错过了更多_tkinter。
哦,我只是遵循解决schemeIgnacio Vazquez-Abramsbuild议在构buildpython之前安装tk-dev。 (在Ubuntu 16.04上从源代码构buildPython-3.6.1)
有一些预编译的对象和二进制文件是我昨天编译的,虽然我没有清理对象,只是在同一个构buildpath上重新构build。 它的作品非常漂亮。
sudo apt install tk-dev (On the python build path) (No need to conduct 'make clean') ./configure make sudo make install
而已!
sudo apt-get install python3-tk
为了在Ubuntu 16.04上使用pyenv
,我必须:
$ sudo apt-get install python-tk python3-tk tk-dev
然后安装我想要的Python版本:
$ pyenv install 3.6.2
然后我可以导入tkinter就好了:
import tkinter
我在python 2.7.9上遇到这个问题。 为了解决这个问题,我安装了tk和tcl,然后重新编译python代码并重新安装,在configure期间,我明确地设置了tk和tcl的path
./configure –with-tcltk-includes =“ – I / usr / include”–with-tcltk-libs =“ – L / usr / lib64 -ltcl8.5 -L / usr / lib64 -ltk8.5”
另外,还有一篇关于python安装过程的文章: 从Source构buildPython
这个症状也可能发生在更新版本的python(例如2.7.13)已经安装在/ usr / local / bin“版本python版本旁边”,然后随后的操作系统升级(比如Ubuntu 12.04 – > Ubuntu 14.04)无法删除更新的Python那里。
为了解决这个不兼容问题,我们必须这样做
a)删除/ usr / local / bin中的更新版本的python;
b)卸载python-idle2.7; 和
c)重新安装python-idle2.7。