详解pythontkinter模块安装过程
引⾔:
在Python3下运⾏Matplotlib之时,碰到了”No module named _tkinter“的问题,花费数⼩时进⾏研究解决,这⾥讲整个过程记录下来,并尝试分析过程中的解决思路利弊得失,以资后效,这⾥重点提⽰需要关注错误信息的分析,这个是第⼀现场。
环境介绍
任何技术问题的出现以及修复都是依赖于系统环境以及特定版本的,这⾥⾸先描述如下:
Ubuntu: 17.10
Python: 3.6.1 基于virutalenv来切换不同的Python环境
tkinter的问题描述
ubuntu怎么安装python
原程序中基于matplotlib来进⾏绘图操作,其中在运⾏过程中,报出来了错误信息。由于原程序⼤部分⽆关问题本⾝,且⽇志本⾝⽐较多,这⾥仅仅截取关键信息:
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
问题初步分析
⽤过python的朋友都知道,碰到类似的问题,⽐如import Error,⼤概率情况下都是某个包未安装,故第⼀反应就是某个包缺失了,于是⾸先进⾏了包和类库的查询:
pip3 search tkinter
结果发现⼤量的包,被匹配到,其中若⼲相关的包有tkinter,这些信息基本上没有帮助。
..................
tkinter.help (2.0) - Small Preview of Tkinter Widgets
tkinter3000 (1.1-20051211) - Widget Construction Kit for Tkinter
tkinterquickhelper (1.5.18) - Helpers for tkinter, extra windows.
tkintertable (1.2) - Extendable table class for Tkinter
.......................
于是尝试直接安装tkinter,结果没有发现tkinter包
> pip3 install tkinter
Collecting tkinter
Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter
什么是tkinter, tcl ,tk
tkinter其实是Python调⽤tcl程序的标准Python程序,可以通过这个interface调⽤tcl的程序,因为在⼤多数的unix系统中都内置了很多的tcl程序和命令。
Tcl 是“⼯具控制语⾔(Tool Command Language)”的缩写,其⾯向对象为otcl语⾔。Tk 是 Tcl“图形⼯具箱”的扩展,它提供各种标准的 GUI 接⼝项,以利于迅速进⾏⾼级应⽤程序开发。
于是,执⾏terminal 命令:
python -m tkinter
如果执⾏正确的话,可以看到如下界⾯指令,这⾥主要是指在Linux的桌⾯系统下:
尝试解决问题-1
在⽹络上初次搜索之后,发现有⼈提⽰说python-tk/python3-tk的类库需要在操作系统层⾯进⾏安装。本次案例以Ubuntu为例,查询其是否安装:
>sudo apt search python3-tk
正在排序... 完成
全⽂搜索... 完成
python3-tk/artful,now 3.6.3-0ubuntu1 amd64 [已安装]
Tkinter - Writing Tk applications with Python 3.x
python3-tk-dbg/artful 3.6.3-0ubuntu1 amd64
Tkinter - Writing Tk applications with Python 3.x (debug extension)
python3-tksnack/artful,artful,now 2.2.10.20090623-dfsg-6 all [已安装]
Sound extension to Tcl/Tk and Python/Tkinter - Python 3.x library
上述是已经安装的显⽰信息,如果没有安装,则需要执⾏,安装指令:
sudo apt install python3-tk (Ubuntu)
yum install python3-tk (Centos)
在安装完成之后,重新执⾏程序,然后报出同样的错误,问题仍然存在。
然后有发现有信息说,需要安装tk的开发类库,于是,在查询之后未安装之后,直接进⾏安装:
sudo apt install tk-dev (Ubuntu/Debian)
yum install tk-devel (CentOS)
在安装之后,重新执⾏程序,错误仍然存在。
尝试解决问题-2
在stackoverflow上搜索⼀番之后,发现有⼈提⽰说,某些情况下是tcl/tk安装不完整造成的,于是就重新下来了tcl/tk的源代码包:
然后分别下来两者源代码,加压缩之后,切⼊源代码⽬录:
configure
make or make test
sudo make install
在重新安装tck/tk之后,重新执⾏代码,问题依然存在。
最终解决问题
在尝试了若⼲次之后,⾃我感觉该安装和设置的选项都做了,怎么问题依然存在呢?我忽然发觉提⽰错误信息中的第⼀句关键信息:
If this fails your Python may not be configured for Tk
或许这⾥的问题,根本不是tkinter没有安装,或者被正确安装完成,⽽是没有被正确的配置好。⽬前tc
l/tk的内容都已经安装好了,只是在python中没有配置好,但是python3-tk之类的都已经安装了,但是问题并没有被解决。如果这样,那就重新安装Python运⾏环境吧。
解决办法:到python的安装路径
./configure --with-ssl #重新编译
make
make install
然后就能导⼊成功了
由于⽬前的*unix系统都是基于python 2.x系列的,如果需要使⽤Python3则需要⾃⾏进⾏代码的编译安装,于是重新基于源代码进⾏了编译和安装,然后进⼊python的命令⾏,
import tkinter
提⽰可以正确加载。于是重新执⾏了之前的原程序,可以正确输出结果了。问题到此为⽌,已经被正确的解决。
过程总结分析
这⾥讲其中的得失点进⾏⼀下总结:
tkinter是⼀个python的接⼝类库,⽤以调⽤tcl/tk程序,故⼀般在操作系统层⾯会有相应的类库安装,⽽⾮仅仅依靠pip3来安装
相应的python类库,⽐如, python3-tk
devel库的安装,在*unix系统中,在进⾏开发之中,很多情况下是需要devel类库安装的,这个是⼀个⼤概率的规则。
某些情况下,会出现安装不完整的情况或者安装缺失某些类库的情况。这个时候可以考虑重新覆盖安装,⽐如tcl/tk, python3的重新安装
重视错误信息的分析和⽅向性指引。在本案例中,关键的提⽰信息有2个部分,其⼀,moulde未安装或没有到,则从安装类库的⽅向进⾏尝试解决。其⼆,假定包已经安装,但是未被正确的配置好。笔者在解决问题之时,⾸选了思路⼀来进⾏解决;在碰到各种尝试失败之后,才不得不转向其⼆的思路来解决。如果从两个⽅向同时来解决的话,或者这个问题可以被更快的解决。
###centos 安装tkinter
yum install python-tools
总结
以上所述是⼩编给⼤家介绍的python tkinter模块安装过程,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。