文章目录

  • 前言
  • 1. 环境
  • 2. 问题描述
  • 3. 给Python2.7安装tkinter
  • 4. 给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 npx = np.linspace(-3, 3, 50)
y1 = 2*x + 1plt.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 xxxsudo 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

给python安装tkinter模块(及各种问题的解决:如 ModuleNotFoundError: No module named ‘_tkinter’)相关推荐

  1. 已安装各个模块,程序仍报错:ModuleNotFoundError: No module named 'numpy'

    对于已安装各个模块的如numpy.pandas.jupyter notebook等,程序仍报错:ModuleNotFoundError: No module named 'numpy' 我当时还怀疑自 ...

  2. python安装tkinter模块_详解python tkinter模块安装过程

    引言: 在Python3下运行Matplotlib之时,碰到了"No module named _tkinter"的问题,花费数小时进行研究解决,这里讲整个过程记录下来,并尝试分析 ...

  3. python爬虫执行scrapy crawl demo出现: import win32api ModuleNotFoundError: No module named 'win32api'错误

    执行: >scrapy crawl demo 可能会出现这个错误: import win32api ModuleNotFoundError: No module named 'win32api' ...

  4. linux下载tkinter模块,Linux升级Python提示Tkinter模块找不到解决

    一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [root@li250- ~]# python Python 2.6. (r266:, Feb , ::) [GCC ...

  5. python没有tkinter_Python升级提示Tkinter模块找不到的解决方法

    一.安装tkinter在Linux中python默认是不安装Tkinter模块, [root@li250-193 ~]# python Python 2.6.6 (r266:84292, Feb 22 ...

  6. linux中引入python的tkinter模块

    2019独角兽企业重金招聘Python工程师标准>>> `Python3找不到tkinter模块: Tkinter是Python的GUI widget. 一般情况下Linux都没有自 ...

  7. Python中Tkinter模块的Canvas控件绘制jpg图片到指定区域

      准备在Python的Tkinter模块中用Canvas绘制如下形式的工艺卡片(图片来自参考文献5,原图来自参考文献4),但是在绘制图形时遇到两个问题,特此记录如下: jpg图片无法读取   Can ...

  8. 一个基于Python的tkinter模块实现的游戏活动日历模拟器

    一个基于Python的tkinter模块实现的游戏活动日历模拟器 1.Python环境准备 2.简单介绍 3.源代码 4.源代码及活动配置表下载 1.Python环境准备 运行该项目需要Python3 ...

  9. Python 安装 xlsx模块

    为什么80%的码农都做不了架构师?>>>    Python 安装 xlsx模块 很多时候自动化测试时测试用例是写在excel中的如何读取转换成字典是一个比较关键的问题,使用pip命 ...

最新文章

  1. alpha阶段个人总结(201521123031林庭亦)
  2. Go 1.9 sync.Map揭秘
  3. react - antd (Table 与 Cascader 平级数据转树形实操)
  4. Xcode代码块功能
  5. 利用矩阵的n次方求图的连通性
  6. java取整数位_java获取整数的各位数值
  7. 怎么用计算机excel计算矩阵,怎样用EXCEL进行矩阵计算?
  8. 语法分析分析器的实现
  9. 智能灯丝灯方案为复古设计注入“ 科技基因 ”
  10. 游戏里面的模型是怎么制作的?次世代场景建模有哪些特点?
  11. c语言书面作业3,C语言程序设计
  12. 阿里云服务器搭建java运行环境(jdk+mysql+tomcat)
  13. HSSFWorkbook EXCEL导出
  14. 使用 LaTeX 绘制流程图
  15. 力扣(13.278)补8.23
  16. 深度学习应用13电影评论情感分析
  17. 人见人爱!收款码背后的原理是什么?
  18. PyTorch 简介
  19. 【絮叨.1】同时在写四门语言是怎样一种体验?
  20. #ffffff为什么是白色

热门文章

  1. excel 2007的筛选和自定义筛选及复制选中的筛选内容
  2. vue路由IE9浏览器iframe显示空白
  3. c++11 总结-1
  4. Scissoring By Projection Matrix
  5. PythonOCC基础使用:opencascade三维建模命令——一个链轮的绘制(很重要)
  6. 黑苹果MacOS Big Sur11.2.3 OC引导 i5-9600+华硕(ASUS)TUF B365M-PLUS GAMING ITX 安装镜像分享,可无痛直升系统
  7. U盘在Ubuntu下提示只读文件系统
  8. Unity3d 基于物理渲染Physically-Based Rendering之最终篇
  9. const指针用法总结
  10. 微服务架构在二手交易平台(转转)中的实践