Linux Mint 18.3下Python3.5无法导入tkinter的问题求助
Hey,我之前在多Python版本环境里也踩过类似的坑,来帮你搞定这个Python 3.5无法导入tkinter的问题!
先明确你的现状
你在Linux Mint 18.3上同时运行着三个Python版本:
python→ Python 2.7.12(能正常导入Tkinter)python3→ Python 3.5.2(导入tkinter时报错)python3.6→ Python 3.6.5(能正常导入tkinter)
报错提示要安装python3-tk,但你已经装了;尝试安装python3.5-tk又发现它是虚拟包,当前系统里的python3-tk其实绑定到了Python 3.6——这就是问题的根源!
问题本质
当你在系统中安装了Python 3.6后,软件源里的python3-tk包会默认关联到高版本的Python,导致Python 3.5对应的底层tkinter模块(_tkinter)缺失,自然就导入失败了。
两种解决方案
方案一:给Python 3.5补装tkinter模块
这个方法不用换版本管理工具,直接补全编译依赖即可:
- 先安装编译tkinter需要的底层库:
sudo apt-get install tk-dev python3.5-dev
- 重新编译Python 3.5并启用tkinter支持:
- 如果没有Python 3.5.2的源码,先获取:
sudo apt-get source python3.5 - 进入源码目录,配置编译参数并完成安装:
cd Python-3.5.2/ ./configure --with-tk make sudo make install
- 如果没有Python 3.5.2的源码,先获取:
方案二:用pyenv隔离Python版本(更推荐)
多版本Python混装最容易出现依赖冲突,用pyenv能彻底隔离每个版本的运行环境:
- 先安装pyenv的依赖包:
sudo apt-get install git curl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
- 安装pyenv:
curl https://pyenv.run | bash
- 把pyenv加入shell配置(以bash为例):
打开~/.bashrc,添加以下三行:
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
执行source ~/.bashrc让配置生效(或者重启shell)。
4. 安装Python 3.5.2并设为当前目录默认版本:
pyenv install 3.5.2 pyenv local 3.5.2
现在再运行python3(pyenv会自动把python指向3.5.2),导入tkinter就完全没问题了!
验证是否解决
执行这条命令测试:
python3 -c "import tkinter; print('tkinter导入成功!')"
如果没有报错,就说明问题搞定啦~
内容的提问来源于stack exchange,提问作者user9784391
相关产品推荐
相关产品推荐

