詳解python tkinter模塊安裝過(guò)程
引言:
在Python3下運(yùn)行Matplotlib之時(shí),碰到了”No module named _tkinter“的問(wèn)題,花費(fèi)數(shù)小時(shí)進(jìn)行研究解決,這里講整個(gè)過(guò)程記錄下來(lái),并嘗試分析過(guò)程中的解決思路利弊得失,以資后效,這里重點(diǎn)提示需要關(guān)注錯(cuò)誤信息的分析,這個(gè)是第一現(xiàn)場(chǎng)。
環(huán)境介紹
任何技術(shù)問(wèn)題的出現(xiàn)以及修復(fù)都是依賴于系統(tǒng)環(huán)境以及特定版本的,這里首先描述如下:
Ubuntu: 17.10
Python: 3.6.1 基于virutalenv來(lái)切換不同的Python環(huán)境
tkinter的問(wèn)題描述
原程序中基于matplotlib來(lái)進(jìn)行繪圖操作,其中在運(yùn)行過(guò)程中,報(bào)出來(lái)了錯(cuò)誤信息。由于原程序大部分無(wú)關(guān)問(wèn)題本身,且日志本身比較多,這里僅僅截取關(guān)鍵信息:
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
問(wèn)題初步分析
用過(guò)python的朋友都知道,碰到類似的問(wèn)題,比如import Error,大概率情況下都是某個(gè)包未安裝,故第一反應(yīng)就是某個(gè)包缺失了,于是首先進(jìn)行了包和類庫(kù)的查詢:
pip3 search tkinter
結(jié)果發(fā)現(xiàn)大量的包,被匹配到,其中若干相關(guān)的包有tkinter,這些信息基本上沒(méi)有幫助。
..................
tkinter.help (2.0) - Small Preview of Tkinter Widgets
tkinter3000 (1.1-20051211) - Widget Construction Kit for Tkinter
tkinterhtml (0.7) - Python wrapper for Tkhtml3 (http://tkhtml.tcl.tk/)
tkinterquickhelper (1.5.18) - Helpers for tkinter, extra windows.
tkintertable (1.2) - Extendable table class for Tkinter
.......................
于是嘗試直接安裝tkinter,結(jié)果沒(méi)有發(fā)現(xiàn)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
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社區(qū):https://docs.python.org/3/library/tkinter.html
tkinter其實(shí)是Python調(diào)用tcl程序的標(biāo)準(zhǔn)Python程序,可以通過(guò)這個(gè)interface調(diào)用tcl的程序,因?yàn)樵诖蠖鄶?shù)的unix系統(tǒng)中都內(nèi)置了很多的tcl程序和命令。
Tcl 是“工具控制語(yǔ)言(Tool Command Language)”的縮寫,其面向?qū)ο鬄閛tcl語(yǔ)言。Tk 是 Tcl“圖形工具箱”的擴(kuò)展,它提供各種標(biāo)準(zhǔn)的 GUI 接口項(xiàng),以利于迅速進(jìn)行高級(jí)應(yīng)用程序開發(fā)。
于是,執(zhí)行terminal 命令:
python -m tkinter
如果執(zhí)行正確的話,可以看到如下界面指令,這里主要是指在Linux的桌面系統(tǒng)下:
嘗試解決問(wèn)題-1
在網(wǎng)絡(luò)上初次搜索之后,發(fā)現(xiàn)有人提示說(shuō)python-tk/python3-tk
的類庫(kù)需要在操作系統(tǒng)層面進(jìn)行安裝。本次案例以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
上述是已經(jīng)安裝的顯示信息,如果沒(méi)有安裝,則需要執(zhí)行,安裝指令:
sudo apt install python3-tk (Ubuntu) yum install python3-tk (Centos)
在安裝完成之后,重新執(zhí)行程序,然后報(bào)出同樣的錯(cuò)誤,問(wèn)題仍然存在。
然后有發(fā)現(xiàn)有信息說(shuō),需要安裝tk的開發(fā)類庫(kù),于是,在查詢之后未安裝之后,直接進(jìn)行安裝:
sudo apt install tk-dev (Ubuntu/Debian) yum install tk-devel (CentOS)
在安裝之后,重新執(zhí)行程序,錯(cuò)誤仍然存在。
嘗試解決問(wèn)題-2
在stackoverflow上搜索一番之后,發(fā)現(xiàn)有人提示說(shuō),某些情況下是tcl/tk安裝不完整造成的,于是就重新下來(lái)了tcl/tk的源代碼包:
下載鏈接: http://www.tcl.tk/software/tcltk/download.html
然后分別下來(lái)兩者源代碼,加壓縮之后,切入源代碼目錄:
configure make or make test sudo make install
在重新安裝tck/tk之后,重新執(zhí)行代碼,問(wèn)題依然存在。
最終解決問(wèn)題
在嘗試了若干次之后,自我感覺該安裝和設(shè)置的選項(xiàng)都做了,怎么問(wèn)題依然存在呢?我忽然發(fā)覺提示錯(cuò)誤信息中的第一句關(guān)鍵信息:
If this fails your Python may not be configured for Tk
或許這里的問(wèn)題,根本不是tkinter沒(méi)有安裝,或者被正確安裝完成,而是沒(méi)有被正確的配置好。目前tcl/tk的內(nèi)容都已經(jīng)安裝好了,只是在python中沒(méi)有配置好,但是python3-tk之類的都已經(jīng)安裝了,但是問(wèn)題并沒(méi)有被解決。如果這樣,那就重新安裝Python運(yùn)行環(huán)境吧。
解決辦法:找到python的安裝路徑
./configure --with-ssl #重新編譯 make make install
然后就能導(dǎo)入成功了
由于目前的*unix系統(tǒng)都是基于python 2.x系列的,如果需要使用Python3則需要自行進(jìn)行代碼的編譯安裝,于是重新基于源代碼進(jìn)行了編譯和安裝, 然后進(jìn)入python的命令行,
import tkinter
提示可以正確加載。于是重新執(zhí)行了之前的原程序,可以正確輸出結(jié)果了。問(wèn)題到此為止,已經(jīng)被正確的解決。
過(guò)程總結(jié)分析
這里講其中的得失點(diǎn)進(jìn)行一下總結(jié):
tkinter是一個(gè)python的接口類庫(kù),用以調(diào)用tcl/tk程序,故一般在操作系統(tǒng)層面會(huì)有相應(yīng)的類庫(kù)安裝,而非僅僅依靠pip3來(lái)安裝相應(yīng)的python類庫(kù),比如, python3-tk
devel庫(kù)的安裝,在*unix系統(tǒng)中,在進(jìn)行開發(fā)之中,很多情況下是需要devel類庫(kù)安裝的,這個(gè)是一個(gè)大概率的規(guī)則。
某些情況下,會(huì)出現(xiàn)安裝不完整的情況或者安裝缺失某些類庫(kù)的情況。這個(gè)時(shí)候可以考慮重新覆蓋安裝,比如tcl/tk, python3的重新安裝
重視錯(cuò)誤信息的分析和方向性指引。 在本案例中,關(guān)鍵的提示信息有2個(gè)部分,其一,moulde未安裝或沒(méi)有找到,則從安裝類庫(kù)的方向進(jìn)行嘗試解決。 其二, 假定包已經(jīng)安裝,但是未被正確的配置好。 筆者在解決問(wèn)題之時(shí),首選了思路一來(lái)進(jìn)行解決;在碰到各種嘗試失敗之后,才不得不轉(zhuǎn)向其二的思路來(lái)解決。如果從兩個(gè)方向同時(shí)來(lái)解決的話,或者這個(gè)問(wèn)題可以被更快的解決。
###centos 安裝tkinter yum install python-tools
總結(jié)
以上所述是小編給大家介紹的python tkinter模塊安裝過(guò)程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- python3使用tkinter實(shí)現(xiàn)ui界面簡(jiǎn)單實(shí)例
- Python Tkinter簡(jiǎn)單布局實(shí)例教程
- python的tkinter布局之簡(jiǎn)單的聊天窗口實(shí)現(xiàn)方法
- Python Tkinter基礎(chǔ)控件用法
- 對(duì)python Tkinter Text的用法詳解
- 使用Python中的tkinter模塊作圖的方法
- Python 窗體(tkinter)按鈕 位置實(shí)例
- 基于python的Tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)易計(jì)算器
- python中tkinter簡(jiǎn)要教程(小白必看)
相關(guān)文章
詳解Python如何使用Netmiko進(jìn)行文件傳輸
Netmiko是一個(gè)用于連接和管理各種網(wǎng)絡(luò)設(shè)備的Python庫(kù),它是Paramiko的一個(gè)擴(kuò)展。本文就來(lái)講講如何利用Netmiko實(shí)現(xiàn)文件傳輸功能吧2023-05-05pytorch finetuning 自己的圖片進(jìn)行訓(xùn)練操作
這篇文章主要介紹了pytorch finetuning 自己的圖片進(jìn)行訓(xùn)練操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06基于Python實(shí)現(xiàn)模擬三體運(yùn)動(dòng)的示例代碼
此前所做的一切三體和太陽(yáng)系的動(dòng)畫,都是基于牛頓力學(xué)的,而且直接對(duì)微分進(jìn)行差分化,從而精度非常感人,用不了幾年就得撞一起去。所以本文來(lái)用Python重新模擬一下三體運(yùn)動(dòng),感興趣的可以了解一下2023-03-03Python+微信接口實(shí)現(xiàn)運(yùn)維報(bào)警
這篇文章主要介紹了Python+微信接口實(shí)現(xiàn)運(yùn)維報(bào)警的相關(guān)資料,需要的朋友可以參考下2016-08-08Flask Paginate實(shí)現(xiàn)表格分頁(yè)的使用示例
flask_paginate是Flask框架的一個(gè)分頁(yè)擴(kuò)展,用于處理分頁(yè)相關(guān)的功能,本文就來(lái)介紹一下Flask Paginate實(shí)現(xiàn)表格分頁(yè)的使用示例,感興趣的可以了解一下2023-11-11python3.12.7降級(jí)到3.10.0的方法步驟
本文主要介紹了python3.12.7降級(jí)到3.10.0的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12使用Python腳本生成隨機(jī)IP的簡(jiǎn)單方法
這篇文章主要介紹了使用Python腳本生成隨機(jī)IP的簡(jiǎn)單方法,并且可以自己設(shè)定IP數(shù)值范圍,需要的朋友可以參考下2015-07-07Python 編碼Basic Auth使用方法簡(jiǎn)單實(shí)例
這篇文章主要介紹了 Python 編碼Basic Auth使用方法簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05