您的位置:首页 > 编程语言 > Python开发

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

2018-02-05 09:34 791 查看
我用的 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、

import tkMessageBox
 

改成下面:

import tkinter.messagebox #对应着tkinter文件夹底下的messagebox.py  

messagebox.showinfo("title","hello world") #NameError: name 'messagebox' is not defined  

[python] view
plain copy

tkinter.messagebox.showinfo("title","hello world") #正确  

或者改成

[python] view
plain copy

from tkinter import messagebox #对应着tkinter文件夹底下的messagebox.py  

则可以写成

[python] view
plain copy

messagebox.showinfo("title","hello world")   

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

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

from packages1.packages2 import modules1

或者

import packages1.packages2.modules1

2.

[python] view
plain copy

from tkinter import *  

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

[python] view
plain copy

root = Tk()  

但是如果想使用messagebox.py里的对象,还是得老老实实地引用它:

[python] view
plain copy

from tkinter import messagebox #对应着tkinter文件夹底下的messagebox.py  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐