Python下"No module named _tkinter"問題解決過程分析

引言:在Python3下運(yùn)行Matplotlib之時疮丛,碰到了"No module named _tkinter“的問題,花費(fèi)數(shù)小時進(jìn)行研究解決辆它,這里講整個過程記錄下來誊薄,并嘗試分析過程中的解決思路利弊得失,以資后效锰茉,這里重點(diǎn)提示需要關(guān)注錯誤信息的分析呢蔫,這個是第一現(xiàn)場。

環(huán)境介紹

任何技術(shù)問題的出現(xiàn)以及修復(fù)都是依賴于系統(tǒng)環(huán)境以及特定版本的飒筑,這里首先描述如下:

Ubuntu: 17.10?

Python: 3.6.1? ?基于virutalenv來切換不同的Python環(huán)境

tkinter的問題描述

原程序中基于matplotlib來進(jìn)行繪圖操作咐刨,其中在運(yùn)行過程中,報出來了錯誤信息扬霜。由于原程序大部分無關(guān)問題本身定鸟,且日志本身比較多,這里僅僅截取關(guān)鍵信息:

import _tkinter # If this fails your Python may not be configured for Tk

ImportError: No module named _tkinter

問題初步分析

用過python的朋友都知道著瓶,碰到類似的問題联予,比如import Error,大概率情況下都是某個包未安裝,故第一反應(yīng)就是某個包缺失了沸久,于是首先進(jìn)行了包和類庫的查詢:

pip3 search tkinter

結(jié)果發(fā)現(xiàn)大量的包季眷,被匹配到,其中若干相關(guān)的包有tkinter卷胯,這些信息基本上沒有幫助子刮。

..................

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é)果沒有發(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程序挺峡,可以通過這個interface調(diào)用tcl的程序,因?yàn)樵诖蠖鄶?shù)的unix系統(tǒng)中都內(nèi)置了很多的tcl程序和命令担钮。

Tcl 是“工具控制語言(Tool Command Language)”的縮寫橱赠,其面向?qū)ο鬄閛tcl語言。Tk 是 Tcl“圖形工具箱”的擴(kuò)展箫津,它提供各種標(biāo)準(zhǔn)的 GUI 接口項(xiàng)狭姨,以利于迅速進(jìn)行高級應(yīng)用程序開發(fā)。

于是苏遥,執(zhí)行terminal 命令:

python -m tkinter

如果執(zhí)行正確的話饼拍,可以看到如下界面指令,這里主要是指在Linux的桌面系統(tǒng)下:


嘗試解決問題-1

在網(wǎng)絡(luò)上初次搜索之后田炭,發(fā)現(xiàn)有人提示說python-tk/python3-tk的類庫需要在操作系統(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)安裝的顯示信息诫肠,如果沒有安裝司澎,則需要執(zhí)行,安裝指令:

>> sudo apt install python3-tk? (Ubuntu)

>> yum install python3-tk? ? (Centos)

在安裝完成之后栋豫,重新執(zhí)行程序挤安,然后報出同樣的錯誤,問題仍然存在丧鸯。

然后有發(fā)現(xiàn)有信息說蛤铜,需要安裝tk的開發(fā)類庫,于是丛肢,在查詢之后未安裝之后围肥,直接進(jìn)行安裝:

>> sudo apt install tk-dev (Ubuntu/Debian)

>> yum install tk-devel (CentOS)

在安裝之后,重新執(zhí)行程序蜂怎,錯誤仍然存在穆刻。

嘗試解決問題-2

在stackoverflow上搜索一番之后,發(fā)現(xiàn)有人提示說杠步,某些情況下是tcl/tk安裝不完整造成的氢伟,于是就重新下來了tcl/tk的源代碼包:

下載鏈接:?http://www.tcl.tk/software/tcltk/download.html

然后分別下來兩者源代碼榜轿,加壓縮之后,切入源代碼目錄:

>> configure

>> make or make test

>> sudo make install?

在重新安裝tck/tk之后朵锣,重新執(zhí)行代碼谬盐,問題依然存在。

最終解決問題

在嘗試了若干次之后诚些,自我感覺該安裝和設(shè)置的選項(xiàng)都做了飞傀,怎么問題依然存在呢?我忽然發(fā)覺提示錯誤信息中的第一句關(guān)鍵信息:

# If this fails your Python may not be configured for Tk

或許這里的問題诬烹,根本不是tkinter沒有安裝砸烦,或者被正確安裝完成,而是沒有被正確的配置好椅您。目前tcl/tk的內(nèi)容都已經(jīng)安裝好了,只是在python中沒有配置好寡键,但是python3-tk之類的都已經(jīng)安裝了掀泳,但是問題并沒有被解決。如果這樣西轩,那就重新安裝Python運(yùn)行環(huán)境吧员舵。

由于目前的*unix系統(tǒng)都是基于python 2.x系列的,如果需要使用Python3則需要自行進(jìn)行代碼的編譯安裝藕畔,于是重新基于源代碼進(jìn)行了編譯和安裝马僻, 然后進(jìn)入python的命令行,

>> import tkinter

提示可以正確加載注服。于是重新執(zhí)行了之前的原程序韭邓,可以正確輸出結(jié)果了。問題到此為止溶弟,已經(jīng)被正確的解決女淑。

過程總結(jié)分析

這里講其中的得失點(diǎn)進(jìn)行一下總結(jié):

1.? tkinter是一個python的接口類庫,用以調(diào)用tcl/tk程序辜御,故一般在操作系統(tǒng)層面會有相應(yīng)的類庫安裝鸭你,而非僅僅依靠pip3來安裝相應(yīng)的python類庫,比如, python3-tk

2. devel庫的安裝擒权,在*unix系統(tǒng)中袱巨,在進(jìn)行開發(fā)之中,很多情況下是需要devel類庫安裝的碳抄,這個是一個大概率的規(guī)則愉老。

3. 某些情況下,會出現(xiàn)安裝不完整的情況或者安裝缺失某些類庫的情況剖效。這個時候可以考慮重新覆蓋安裝俺夕,比如tcl/tk, python3的重新安裝

4. 重視錯誤信息的分析和方向性指引裳凸。 在本案例中,關(guān)鍵的提示信息有2個部分劝贸,其一姨谷,moulde未安裝或沒有找到,則從安裝類庫的方向進(jìn)行嘗試解決映九。 其二梦湘, 假定包已經(jīng)安裝,但是未被正確的配置好件甥。 筆者在解決問題之時捌议,首選了思路一來進(jìn)行解決;在碰到各種嘗試失敗之后引有,才不得不轉(zhuǎn)向其二的思路來解決瓣颅。如果從兩個方向同時來解決的話,或者這個問題可以被更快的解決譬正。

筆者解決這個問題花費(fèi)了大約3~4個小時左右宫补。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市曾我,隨后出現(xiàn)的幾起案子粉怕,更是在濱河造成了極大的恐慌,老刑警劉巖抒巢,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贫贝,死亡現(xiàn)場離奇詭異恒傻,居然都是意外死亡附井,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門雅采,熙熙樓的掌柜王于貴愁眉苦臉地迎上來型诚,“玉大人蜈彼,你說我怎么就攤上這事“呈唬” “怎么了幸逆?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長暮现。 經(jīng)常有香客問我还绘,道長,這世上最難降的妖魔是什么栖袋? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任拍顷,我火速辦了婚禮,結(jié)果婚禮上塘幅,老公的妹妹穿的比我還像新娘昔案。我一直安慰自己尿贫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布踏揣。 她就那樣靜靜地躺著庆亡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捞稿。 梳的紋絲不亂的頭發(fā)上又谋,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音娱局,去河邊找鬼彰亥。 笑死,一個胖子當(dāng)著我的面吹牛衰齐,可吹牛的內(nèi)容都是我干的任斋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耻涛,長吁一口氣:“原來是場噩夢啊……” “哼废酷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起犬第,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤锦积,失蹤者是張志新(化名)和其女友劉穎芒帕,沒想到半個月后歉嗓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡背蟆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年鉴分,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片带膀。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡志珍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垛叨,到底是詐尸還是另有隱情伦糯,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布嗽元,位于F島的核電站敛纲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剂癌。R本人自食惡果不足惜淤翔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佩谷。 院中可真熱鬧旁壮,春花似錦监嗜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至童叠,卻和暖如春框喳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厦坛。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工五垮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杜秸。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓放仗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撬碟。 傳聞我的和親對象是個殘疾皇子诞挨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 環(huán)境管理管理Python版本和環(huán)境的工具。p–非常簡單的交互式python版本管理工具呢蛤。pyenv–簡單的Pyth...
    MrHamster閱讀 3,792評論 1 61
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,478評論 6 427
  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富惶傻,涉及面非常廣。awesome-p...
    若與閱讀 18,644評論 4 418
  • 前言 Python的創(chuàng)始人為Guido van Rossum其障。1989年圣誕節(jié)期間银室,在阿姆斯特丹,Guido為了打...
    依依玖玥閱讀 3,567評論 6 37
  • 配方:小島的香草戚風(fēng)1.5倍的量 模具:6寸模具*2 焙烤:180℃励翼,48分鐘 肥裘說:倆個六寸一起烤的蜈敢,用了糖粉...
    A輕車肥裘閱讀 288評論 0 0