给python安装tkinter模块(及各种问题的解决:如 ModuleNotFoundError: No module named ‘

您所在的位置:网站首页 python中怎么安装pil库 给python安装tkinter模块(及各种问题的解决:如 ModuleNotFoundError: No module named ‘

给python安装tkinter模块(及各种问题的解决:如 ModuleNotFoundError: No module named ‘

2024-06-30 23:21| 来源: 网络整理| 查看: 265

文章目录 前言1. 环境2. 问题描述3. 给Python2.7安装tkinter4. 给python3.6.3安装tkinter(注意:这里失败了,但是过程值得记录一下)5. [可行方案] 安装python3.5,并且给其安装tkiner模块6. 小结参考文献

前言

如题,本文旨在解决python报错问题:ModuleNotFoundError: No module named '_tkinter';换言之,本文记录在Ubuntu系统上如何给python的不同版本(包含python2和python3)安装tkinter模块。

1. 环境

操作系统:

Ubuntu14.04

已有的python版本:

Python2.7(系统自带)Python3.4(系统自带)Python3.6.3(从Python官网下载的源代码(source folder)编译而来的python版本)

Python编辑器:

VS code (还是挺好用的)

为什么要用到tkinter模块? 答: 因为在Ubuntu下VSCode中写python代码的时候,如果用到matplotlib模块作图,会无法显示图片弹窗(即plt.show()没用),只能委曲求全选择plt.savefig(path, 'plot.png')存到本地来看。 可能的原因是没有安装tkinter模块。 我不想委曲求全,于是开始寻求解决方案。

2. 问题描述

我在VS code里面写了这样的代码,并在python3.6下运行:

import matplotlib matplotlib.use('TkAgg') # vscode import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3, 3, 50) y1 = 2*x + 1 plt.plot(x, y1) plt.show()

然而,报错如下:

ModuleNotFoundError: No module named ‘_tkinter’

原因:python3.6没有tkinter模块。

以下为解决方案。(虽然是用的python3,但顺手给python2.7也装了tkinter)

3. 给Python2.7安装tkinter

这个较为简单,参考 [1] 即可:

1)安装tkinter: 在终端运行:

sudo apt-get update sudo apt-get install python-tk

2)验证是否安装tkinter模块: 在VScode下写如下代码并运行:

import Tkinter # 注意,Python2下面的Tkinter首字母要大写的 Tkinter._test()

如果成功安装,则能够看到下图这个弹窗: 在这里插入图片描述

4. 给python3.6.3安装tkinter(注意:这里失败了,但是过程值得记录一下)

注意:这里失败了,但是整个过程是我在这上面耗时最久的地方,所以我认为有必要记录一下。(这章节里面的指令都是可以运行的,我都试过,目测不会造成什么问题。如果怕出问题或者想直接找到解决方案的话,可以直接跳到第5节:可行方案。)

1)先参考[1],利用apt-get指令安装适用于python3的tkinter: 在终端输入:

sudo apt-get update sudo apt-get install python3-tk

2)验证是否对python3.6.3有效: 在VScode中写如下代码并运行:

import tkinter # 注意: python3版本下import tkinter的时候,tkinter首字母小写 tkinter._test()

然而,依旧报错:

ModuleNotFoundError: No module named ‘_tkinter’

3)查看python3-tk的版本: 此时在终端输入dpkg --list | grep python3-tk 查看一下python3-tk的版本,输出信息如下:

apr@apr:~$ dpkg --list | grep python3-tk ii python3-tk 3.4.3-1~14.04.2 amd64 Tkinter - Writing Tk applications with Python 3.x

说明这时候安装的python3-tk是面向python3.4版本的。可惜可惜。

4)切换到python3.4: 此时在VSCode下切换到python3.4版本,运行同样的python代码:

import tkinter tkinter._test()

果然可以正常运行且有预期的弹窗出现。

5)总结: 由于我python3.6.3 是从源文件夹安装的,其可执行的python路径在/usr/local/bin/python3, 系统自带的python2和3都是在/usr/bin/文件夹下。而且可能系统自带的python3.4优先级比3.6高,所以python3-tk直接就针对python3.4了。但我认为最可能的原因是:Ubuntu14.04的apt源中只有针对python3.4的python3-tk安装包。(Sadly)

6)一系列尝试:(虽然失败,也记录下其中曲折)

(1)我在python3.6.3的source folder下重新运行了一遍: ./configure sudo make clean sudo make sudo make test sudo make install

么得用呢。

(2)把/usr/bin/python3从指向python3.4改为指向python3.6.3,利用的是:sudo update-alternatives --install xxx 和sudo update-alternatives --config python3指令。 参考了:How to Install Python 3.6.1 in Ubuntu 16.04 LTS 也么得用。(3)去tkinter官网:https://tkdocs.com/tutorial/install.html找到其章节:Installing Tk on Linux,并尝试下载:https://platform.activestate.com/dalewushuang/ActiveTcl-8.5/distributions?platformID=eef02e93-f4a9-5cca-a131-a388ecf57442 下面的ActiveTcl-8.5.19.8519-x86_64-linux-glibc-2.5-403583.tar.gz,然而:网速太慢,太难下载,而且好像还有很多其他各种步骤,而且还要重新编译python3.6.3的源码。这可也太麻烦了。 所以溜了。(4)既然python3.4装好了tkinter,我想直接用python3.4得了。然而,python3.4下不支持:python3.4 -m pip install seaborn等等指令(提示需要python3.5及以上版本)。那就太不方便了,所以我放弃了回退版本。(5)参考[2]:在终端运行如下指令: sudo add-apt-repository ppa:deadsnakes/ppa #添加一个个人仓库,里面有适合python3.6版本的tkinter模块 sudo apt-get update sudo apt-get install python3.6-tk

然而,我发现VScode中多了一个Python版本: 在这里插入图片描述 所以,这个python3.6-tk只支持python3.6.8,不支持python3.6.3,太难了。 然后我想,要不直接用python3.6.8版本就好啦。但是:1)我没找到卸载python3.6.3的方法(貌似可以用locate python3.6 | xargs rm -rf,大概是这样的指令,但是我怕无法恢复,所以不敢用);2)python3.6.8呢,又是minimal版本的好像,我也没找到他的dist-packages文件夹,也没找到他的pip3,反正就是各种没找到,好像也install不了模块,所以也用不了。 很尴尬。

(6)想重新安装python3.6: sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.6

失败了,提示已经有python3.6了。

以上皆为失败尝试。目前来看,是没办法给python3.6.3安装tkinter模块了。但是我最后找到了一个解决方案,请看以下章节。

5. [可行方案] 安装python3.5,并且给其安装tkiner模块

部分可参考[3]。

1)安装python3.5:

sudo add-apt-repository ppa:deadsnakes sudo apt-get update sudo apt-get install python3.5

2)安装适用于python3.5版本的tkinter模块:

sudo add-apt-repository ppa:deadsnakes/ppa #添加一个个人仓库,里面有适合python3.6版本的tkinter模块 sudo apt-get update sudo apt-get install python3.5-tk

3)验证tkinter是否安装成功:

import tkinter tkinter._test()

弹窗已出,成功啦。

4)用pip安装其他的作图相关模块,比如seaborn:

python3.5 -m pip install --user seaborn

备注: python3.5安装好之后好像还要安装pip。(我也记不得了,应该问题不大),这里如果要装的话,在终端运行:

wget https://bootstrap.pypa.io/get-pip.py python3.5 get-pip.py # 注意:这个py文件好像只支持python3.5及以上的版本。所以python3.4确实比较老了。

参考:How to install pip with Python 3?

6. 小结

没啥好说的,光是这篇博客都花了1个小时。整个过程,至少3+小时。

由于整个下午都在和这个问题“杠着”,一直到5点都没找到解决方案,但是在这个过程中也在不断熟悉ubuntu下面的python的各种相关操作,所以一直到5点多准备溜了之前,终于给找到了一个可行方案,也是很不容易了。故而有一个感悟: 无数的经验、经历告诉我,只要坚持下去,一定能在有限的时间内找到解决方案(或者可替代的方案)

所以还是得继续努力,要敢于钻研。

参考文献 [1] Installing tkinter on ubuntu 14.04[2] How do I install Python 3.6 using apt-get?[3] How to replace Python 3.4.3 by 3.5


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3