2019-09-12更新:
参考: https://www.z1987.com/blog/detail/c1570f5604fbcee5020dd8a5fabf01d0
发现个更简单的做法:
1 |
yum install tkinter |
1 2 3 |
On CentOS 7 and Python 3.4, the command is sudo yum install python34-tkinter On Redhat 7.4 with Python 3.6, the command is sudo yum install rh-python36-python-tkinter |
我的是Python7.6, 故安装:
1 |
yum install python36-tkinter |
旧:
在实验用networkx画图时, 在执行如下命令时报错:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
In [1]: import tkinter --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-1-29b37e014535> in <module>() ----> 1 import tkinter /usr/local/python3.7/lib/python3.7/tkinter/__init__.py in <module>() 34 import sys 35 ---> 36 import _tkinter # If this fails your Python may not be configured for Tk 37 TclError = _tkinter.TclError 38 from tkinter.constants import * ModuleNotFoundError: No module named '_tkinter' |
环境介绍
centos: 7.6.1810
Python: 3.7.4 基于virutalenv来切换不同的Python环境
什么是tkinter, tcl ,tk
The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms, as well as on Windows systems. (Tk itself is not part of Python; it is maintained at ActiveState.) You can check that tkinter is properly installed on your system by running python -m tkinter from the command line; this should open a window demonstrating a simple Tk interface.
上述文件摘自Python社区:https://docs.python.org/3/library/tkinter.htmltkinter其实是Python调用tcl程序的标准Python程序,可以通过这个interface调用tcl的程序,因为在大多数的unix系统中都内置了很多的tcl程序和命令。
Tcl 是“工具控制语言(Tool Command Language)”的缩写,其面向对象为otcl语言。Tk 是 Tcl“图形工具箱”的扩展,它提供各种标准的 GUI 接口项,以利于迅速进行高级应用程序开发。
解决步骤:
些情况下是tcl/tk安装不完整造成的,于是就重新下来了tcl/tk的源代码包:
下载链接: http://www.tcl.tk/software/tcltk/download.html
然后分别下来两者源代码,加压缩之后,切入源代码目录:
1 2 3 4 |
tar -zxvf tcl8.7a1-src.tar.gz tar -zxvf tk8.7a1-src.tar.gz cd tcl8.7a1/unix && make && make install cd tk8.7a1/unix && make && make install |
其中在编译tk8.7a1时报错如下:
1 |
fatal error: X11/Xlib.h: No such file or directory |
解决方式为:
安装如下依赖, 然后再进行编译
1 |
yum install -y ncurses-devel libX11-devel |
安装完成后再次执行import tkinter还是会报那个错, 解决方式是: 重新编译安装Python3:
1 2 3 |
cd Python-3.7.4/ ./configure --prefix=/usr/local/python3.7 make && make install |
之后再import, 无报错
过程总结分析
这里讲其中的得失点进行一下总结:
tkinter是一个python的接口类库,用以调用tcl/tk程序,故一般在操作系统层面会有相应的类库安装,而非仅仅依靠pip3来安装相应的python类库,比如, python3-tk
devel库的安装,在*unix系统中,在进行开发之中,很多情况下是需要devel类库安装的,这个是一个大概率的规则。
某些情况下,会出现安装不完整的情况或者安装缺失某些类库的情况。这个时候可以考虑重新覆盖安装,比如tcl/tk, python3的重新安装
重视错误信息的分析和方向性指引。 在本案例中,关键的提示信息有2个部分,其一,moulde未安装或没有找到,则从安装类库的方向进行尝试解决。 其二, 假定包已经安装,但是未被正确的配置好。 笔者在解决问题之时,首选了思路一来进行解决;在碰到各种尝试失败之后,才不得不转向其二的思路来解决。如果从两个方向同时来解决的话,或者这个问题可以被更快的解决。
参考: https://blog.csdn.net/blueheart20/article/details/78763208
0 Comments