解決:ImportError: No module named 'xxxx'-------python中關於import語句

我用的 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  


發佈了165 篇原創文章 · 獲贊 547 · 訪問量 274萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章