1. 程式人生 > >Python下"No module named _tkinter"問題解決過程總結

Python下"No module named _tkinter"問題解決過程總結

引言:在Python3下執行Matplotlib之時,碰到了”No module named _tkinter“的問題,花費數小時進行研究解決,這裡講整個過程記錄下來,並嘗試分析過程中的解決思路利弊得失,以資後效,這裡重點提示需要關注錯誤資訊的分析,這個是第一現場。

環境介紹

任何技術問題的出現以及修復都是依賴於系統環境以及特定版本的,這裡首先描述如下:

Ubuntu: 17.10
Python: 3.6.1 基於virutalenv來切換不同的Python環境

tkinter的問題描述

原程式中基於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 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,結果沒有發現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社群:https://docs.python.org/3/library/tkinter.html

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沒有安裝,或者被正確安裝完成,而是沒有被正確的配置好。目前tcl/tk的內容都已經安裝好了,只是在python中沒有配置好,但是python3-tk之類的都已經安裝了,但是問題並沒有被解決。如果這樣,那就重新安裝Python執行環境吧。

由於目前的*unix系統都是基於python 2.x系列的,如果需要使用Python3則需要自行進行程式碼的編譯安裝,於是重新基於原始碼進行了編譯和安裝, 然後進入python的命令列,

import tkinter

提示可以正確載入。於是重新執行了之前的原程式,可以正確輸出結果了。問題到此為止,已經被正確的解決。

過程總結分析

這裡講其中的得失點進行一下總結:

  1. tkinter是一個python的介面類庫,用以呼叫tcl/tk程式,故一般在作業系統層面會有相應的類庫安裝,而非僅僅依靠pip3來安裝相應的python類庫,比如, python3-tk

  2. devel庫的安裝,在*unix系統中,在進行開發之中,很多情況下是需要devel類庫安裝的,這個是一個大概率的規則。

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

  4. 重視錯誤資訊的分析和方向性指引。 在本案例中,關鍵的提示資訊有2個部分,其一,moulde未安裝或沒有找到,則從安裝類庫的方向進行嘗試解決。 其二, 假定包已經安裝,但是未被正確的配置好。 筆者在解決問題之時,首選了思路一來進行解決;在碰到各種嘗試失敗之後,才不得不轉向其二的思路來解決。如果從兩個方向同時來解決的話,或者這個問題可以被更快的解決。

筆者解決這個問題花費了大約3~4個小時左右。

相關推薦

Python"No module named _tkinter"問題解決過程總結

引言:在Python3下執行Matplotlib之時,碰到了”No module named _tkinter“的問題,花費數小時進行研究解決,這裡講整個過程記錄下來,並嘗試分析過程中的解決思路利弊得失,以資後效,這裡重點提示需要關注錯誤資訊的分析,這個是第一現

Python報ImportError: No module named錯誤解決過程記錄

錯誤原因: 剛開始學習Python的小夥伴應該和我一樣不知道怎麼解決這個錯誤,其實報這個錯是因為模組的缺失,只需要使用python的命令進行安裝模組即可 解決方案: Windows環境下: 進入Python目錄:C:/Python27/下,

No module named _tkinter, please install the python-tk package 解決方法總結

not 原因 sin 程序開發 找到 pytho iss 配置 重新   0. 前言   在ipython環境中,要用到matlotlib庫,運行.py文件時,提示以下錯誤:   No module named _tkinter, please install the py

Windows執行python指令碼報錯“ImportError: No Module named ...”的解決方法

之前遇到一個問題,在Pycharm或IPython之類的IDE上執行指令碼正常,但是直接執行或cmd命令列執行的時候報了模組未能找到的 誤——ImportError: No Module named ...。 這是啥情況? Python在啟動直譯器(Interpreter)的時候

解決python報錯ImportError: No module named '_tkinter'

解決python報錯ImportError: No module named ‘_tkinter’ 報錯資訊:ImportError: No module named ‘_tkinter’, pleas

Mac系統Python ImportError: No module named markdown的解決方法

這很可能是由於沒有安裝markdown庫,首先下載Markdown庫猛擊此,然後解壓該原始碼包,在終端下進入到解壓後的目錄,   輸入以下命令安裝markdown模組,  python setup

【Mac】在Mac OS X解決opencv與PythonNo module named cv2問題

最近遇到一個影象專案,打算搞一搞,看了一些程式碼,發現用Python處理比較方便,鑑於之前做影象都是使用C++、OpenCV,這次打算看看Python與CV的效能與效果。 我之前的mac上面是安裝了Python與opencv的,但都是分別安裝的,並沒有進行一些合用配置。在敲

pythonsetuptools安裝( No module named setuptools 解決方案)

python下的setuptools帶有一個easy_install的工具,在安裝python的每三方模組、工具時很有用,也很方便。安裝setuptools前先安裝pip,請參考:linux中pip安裝步驟與使用詳解1. 下載:在它的官網可以下載到安裝包:https://p

python】安裝python3.7出現ModuleNotFoundError: No module named ‘_ctypes’解決辦法

ModuleNotFoundError: No module named ‘_ctypes’ Traceback (most recent call last) :

ubuntu執行python提示: no module named pip

裝之前都要確認一下是關聯python 還是python3用的 我之前裝了pip啊。後來又裝了幾遍 網上各種方法都不行。 我按知乎的說法 (首先先確認你的python是3.5還是3.6,如果是3.6下面的操作都要改成3.6) 檢查 cd /usr/local/lib

終極解決方案之——Centos7由於誤刪或更新python導致 No module named yum

之前由於不懂yum和python之間的關係,因為一直在學python3,看到系統裡/usr/lib下的python2我就直接刪了,結果。。。 可能還有人是因為python升級的原因,即系統自帶的python2還在,但由於升級導致問題,現在就這兩個原因提出我的解決方案。 1.由於python升級導致yum無

在linux使用matplotlib出現ImportError:no module named _tkinter

今天把寫的畫圖模組放到伺服器上呼叫,linux系統下,出現ImportError:no module named  _tkinter ,從網上找了很多方法 搜到這些,看著就頭大,還沒來的及準備開始,公司技術大哥直接就說敲上這段程式碼就沒問題了 import m

python程式安裝nltk-安裝完成後import報ImportError: No module named '_sqlite3'解決方案

    今天在使用Python的自然語言工具包NLTK時,使用pip3安裝了nltk後,進入python命令列,執行import nltk,報錯ImportError: No module named

python部落格開發)window7上Error loading MySQLdb module: No module named MySQLdb解決辦法

在windows環境中(win7),建立虛擬環境,django建好模型準備遷移資料,執行命令:,出現如下錯誤: (virtualenv) D:\workspace\blog_project>python manage.py makemigrations Traceba

匯入pylab時候出現的ImportError: No module named '_tkinter'錯誤的一種解決方法

在centos系統下,匯入matplotlib時,出現ImportError: No module named ‘_tkinter’的錯誤,首先yum list installed | grep ^tk 檢視是否存在相應模組,通常原因是tkinter和tk-

解決Python提示No module named 'pkg_resources'錯誤

直接執行pip install distribute安裝distribute模組即可。 或者: 1. 下載http://python-distribute.org/distribute_setup.py檔案 2. 然後執行它python distribute_setup.

Macpython3使用requests庫出現No module named 'requests'解決方法

首先需要檢查你是否安裝了requests 安裝方法: pip install requests 如果出現了Requirement already satisfied 代表安裝成功 注意:如果電腦有python2和python3 共存的情況需要pip指定安裝路徑,系統一般自帶

完美解決Python各種no module named "XX"問題

在騰訊雲上玩Django,但總是遇到no module name “django.core.wsgi”,等問題。在django的 error.log中也提示是 no module…..,但是 本地 python3 wsgi.py或者 python3 manage

python ImportError: No module named 的錯誤解決思路和方法

1 首先要確定 是否 安裝了  該模組 在  python 提示符下 輸入  import  MySQLdb  看是否報錯,如果保錯,表面沒有該模組,但是,有的時候往往出現 明明已經安裝 該模組,並提示成功了,但是還是找不到該模組 2 上面那種情況 可能就是  PYTHO

linux7中python ImportError: No module named pymc 處理

簡單的 com RoCE AS install size pack otrs lap linux7中python ImportError: No module named pymc 處理方法 系統環境 #cat /etc/redhat-release CentOS Lin