详解python tkinter模块安装过程
引言:
在Python3下运行Matplotlib之时,碰到了”Nomodulenamed_tkinter“的问题,花费数小时进行研究解决,这里讲整个过程记录下来,并尝试分析过程中的解决思路利弊得失,以资后效,这里重点提示需要关注错误信息的分析,这个是第一现场。
环境介绍
任何技术问题的出现以及修复都是依赖于系统环境以及特定版本的,这里首先描述如下:
Ubuntu:17.10
Python:3.6.1基于virutalenv来切换不同的Python环境
tkinter的问题描述
原程序中基于matplotlib来进行绘图操作,其中在运行过程中,报出来了错误信息。由于原程序大部分无关问题本身,且日志本身比较多,这里仅仅截取关键信息:
import_tkinter#IfthisfailsyourPythonmaynotbeconfiguredforTk
ImportError:Nomodulenamed_tkinter
问题初步分析
用过python的朋友都知道,碰到类似的问题,比如importError,大概率情况下都是某个包未安装,故第一反应就是某个包缺失了,于是首先进行了包和类库的查询:
pip3searchtkinter
结果发现大量的包,被匹配到,其中若干相关的包有tkinter,这些信息基本上没有帮助。
..................
tkinter.help(2.0)-SmallPreviewofTkinterWidgets
tkinter3000(1.1-20051211)-WidgetConstructionKitforTkinter
tkinterhtml(0.7)-PythonwrapperforTkhtml3(http://tkhtml.tcl.tk/)
tkinterquickhelper(1.5.18)-Helpersfortkinter,extrawindows.
tkintertable(1.2)-ExtendabletableclassforTkinter
.......................
于是尝试直接安装tkinter,结果没有发现tkinter包
>pip3installtkinter
Collectingtkinter
Couldnotfindaversionthatsatisfiestherequirementtkinter(fromversions:)
Nomatchingdistributionfoundfortkinter
什么是tkinter,tcl,tk
Thetkinterpackage(“Tkinterface”)isthestandardPythoninterfacetotheTkGUItoolkit.BothTkandtkinterareavailableonmostUnixplatforms,aswellasonWindowssystems.(TkitselfisnotpartofPython;itismaintainedatActiveState.)Youcancheckthattkinterisproperlyinstalledonyoursystembyrunningpython-mtkinterfromthecommandline;thisshouldopenawindowdemonstratingasimpleTkinterface.
上述文件摘自Python社区:https://docs.python.org/3/library/tkinter.html
tkinter其实是Python调用tcl程序的标准Python程序,可以通过这个interface调用tcl的程序,因为在大多数的unix系统中都内置了很多的tcl程序和命令。
Tcl是“工具控制语言(ToolCommandLanguage)”的缩写,其面向对象为otcl语言。Tk是Tcl“图形工具箱”的扩展,它提供各种标准的GUI接口项,以利于迅速进行高级应用程序开发。
于是,执行terminal命令:
python-mtkinter
如果执行正确的话,可以看到如下界面指令,这里主要是指在Linux的桌面系统下:
尝试解决问题-1
在网络上初次搜索之后,发现有人提示说python-tk/python3-tk的类库需要在操作系统层面进行安装。本次案例以Ubuntu为例,查询其是否安装:
>sudoaptsearchpython3-tk
正在排序...完成
全文搜索...完成
python3-tk/artful,now3.6.3-0ubuntu1amd64[已安装] Tkinter-WritingTkapplicationswithPython3.x python3-tk-dbg/artful3.6.3-0ubuntu1amd64 Tkinter-WritingTkapplicationswithPython3.x(debugextension) python3-tksnack/artful,artful,now2.2.10.20090623-dfsg-6all[已安装] SoundextensiontoTcl/TkandPython/Tkinter-Python3.xlibrary
上述是已经安装的显示信息,如果没有安装,则需要执行,安装指令:
sudoaptinstallpython3-tk(Ubuntu) yuminstallpython3-tk(Centos)
在安装完成之后,重新执行程序,然后报出同样的错误,问题仍然存在。
然后有发现有信息说,需要安装tk的开发类库,于是,在查询之后未安装之后,直接进行安装:
sudoaptinstalltk-dev(Ubuntu/Debian) yuminstalltk-devel(CentOS)
在安装之后,重新执行程序,错误仍然存在。
尝试解决问题-2
在stackoverflow上搜索一番之后,发现有人提示说,某些情况下是tcl/tk安装不完整造成的,于是就重新下来了tcl/tk的源代码包:
下载链接:http://www.tcl.tk/software/tcltk/download.html
然后分别下来两者源代码,加压缩之后,切入源代码目录:
configure makeormaketest sudomakeinstall
在重新安装tck/tk之后,重新执行代码,问题依然存在。
最终解决问题
在尝试了若干次之后,自我感觉该安装和设置的选项都做了,怎么问题依然存在呢?我忽然发觉提示错误信息中的第一句关键信息:
IfthisfailsyourPythonmaynotbeconfiguredforTk
或许这里的问题,根本不是tkinter没有安装,或者被正确安装完成,而是没有被正确的配置好。目前tcl/tk的内容都已经安装好了,只是在python中没有配置好,但是python3-tk之类的都已经安装了,但是问题并没有被解决。如果这样,那就重新安装Python运行环境吧。
解决办法:找到python的安装路径
./configure--with-ssl#重新编译 make makeinstall
然后就能导入成功了
由于目前的*unix系统都是基于python2.x系列的,如果需要使用Python3则需要自行进行代码的编译安装,于是重新基于源代码进行了编译和安装,然后进入python的命令行,
importtkinter
提示可以正确加载。于是重新执行了之前的原程序,可以正确输出结果了。问题到此为止,已经被正确的解决。
过程总结分析
这里讲其中的得失点进行一下总结:
tkinter是一个python的接口类库,用以调用tcl/tk程序,故一般在操作系统层面会有相应的类库安装,而非仅仅依靠pip3来安装相应的python类库,比如,python3-tk
devel库的安装,在*unix系统中,在进行开发之中,很多情况下是需要devel类库安装的,这个是一个大概率的规则。
某些情况下,会出现安装不完整的情况或者安装缺失某些类库的情况。这个时候可以考虑重新覆盖安装,比如tcl/tk,python3的重新安装
重视错误信息的分析和方向性指引。在本案例中,关键的提示信息有2个部分,其一,moulde未安装或没有找到,则从安装类库的方向进行尝试解决。其二,假定包已经安装,但是未被正确的配置好。笔者在解决问题之时,首选了思路一来进行解决;在碰到各种尝试失败之后,才不得不转向其二的思路来解决。如果从两个方向同时来解决的话,或者这个问题可以被更快的解决。
###centos安装tkinter yuminstallpython-tools
总结
以上所述是小编给大家介绍的pythontkinter模块安装过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。