解决:ImportError: No module named 'xxxx'-------python中关于import语句

在Python 3.5环境下遇到`ImportError: No module named 'xxxx'`,主要是由于模块名称在Python 2与3之间存在差异。例如,Tkinter在Python 3中变为tkinter。解决方法包括了解模块导入规则,如使用全小写的模块名,以及根据模块结构调整导入路径。对于tkinter库,可以从tkinter导入messagebox模块,例如`import tkinter.messagebox`或`from tkinter import messagebox`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我用的 python 3.5  

1、解决方法如下:

try:
    # for Python2
    from Tkinter import *  
except ImportError:
    # for Python3
    from tkinter import *

通过上面的方法就可以正确导入tkinter模块了最新版本Tkinter要全部小写成tkinter才行

ImportError: No module named 'Tkinter'

这很有可能是因为找到的代码是python2.x的,然而却把它放在python3.x的环境下跑。其实上面的Tkinter库在python3里已经改名了,变成了tkinter,只是首字母变小写了,但是import语句是对大小写敏感的!

其实有个很好的办法来完成由2.x的代码到3.x的代码的转换,这里再以tkinter库为例,方法如下:

1.打开tkinter库的文件夹,比如我的就是C:\Python34\Lib\tkinter,查看其目录结构,如下图

2、
  1. import tkMessageBox  

  2. 改成下面:
  3. import tkinter.messagebox #对应着tkinter文件夹底下的messagebox.py  

  1. messagebox.showinfo("title","hello world"#NameError: name 'messagebox' is not defined  
[python]  view plain  copy
  1. tkinter.messagebox.showinfo("title","hello world"#正确  

或者改成

[python]  view plain  copy
  1. from tkinter import messagebox #对应着tkinter文件夹底下的messagebox.py  
则可以写成

[python]  view plain  copy
  1. messagebox.showinfo("title","hello world")   



最后补充两点要注意的地方:

1.packages可以认为是文件夹,而modules则可以看作是文件夹下的.py文件,而各色各样的import语句归结起来就是

from packages1.packages2 import modules1

或者

import packages1.packages2.modules1

2.

[python]  view plain  copy
  1. from tkinter import *  
并不是将tkinter文件夹下的所有.py文件都import,实际上只是import了__init__.py中的所有对象,比如__init__.py中有个Tk对象,所以在使用了上面这条import语句后,可以直接引用Tk:

[python]  view plain  copy
  1. root = Tk()  
但是如果想使用messagebox.py里的对象,还是得老老实实地引用它:

[python]  view plain  copy
  1. from tkinter import messagebox #对应着tkinter文件夹底下的messagebox.py  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值