解决:ImportError: No module named 'xxxx'-------python中关于import语句的认识2
在使用网上找来的python代码的时候,我经常会碰到这个import语句引发的错误:
ImportError: No module named 'xxxx'
比如我找的代码里有这么几句:
- from Tkinter import *
- import tkMessageBox
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语句,Tkinter改成tkinter,然后
- import tkMessageBox
- import tkinter.messagebox #对应着tkinter文件夹底下的messagebox.py
改成这种形式要注意接下来在引用的时候必须把import后边的符号全部写出来,否则出错:
- messagebox.showinfo("title","hello world") #NameError: name 'messagebox' is not defined
- tkinter.messagebox.showinfo("title","hello world") #正确
或者改成
- from tkinter import messagebox #对应着tkinter文件夹底下的messagebox.py
- messagebox.showinfo("title","hello world")
最后补充两点要注意的地方:
1.packages可以认为是文件夹,而modules则可以看作是文件夹下的.py文件,而各色各样的import语句归结起来就是
from packages1.packages2 import modules1
或者
import packages1.packages2.modules1
2.
- from tkinter import *
- root = Tk()
- from tkinter import messagebox #对应着tkinter文件夹底下的messagebox.py
转载来自:http://blog.****.net/jim7424994/article/details/40929939?locationNum=11