學習python操作xml文檔過程中碰到的ImportError: No module named etree.ElementTree問題,問題現象比較奇怪,做個記錄。
操作環境
Python3.6+Window7
操作步驟(發現問題)
1、創建了一個xml文件,文件名為student.xml
2、創建xml.py文件,代碼如下:
import xml.etree.ElementTree as ET try: ET.parse("student.xml") print "student.xml ok" except: print "student.xml bad" print e
問題現象
執行完一次xml.py文件后再次執行xml.py總是提示ImportError: No module named etree.ElementTree錯誤,手工import xml也是報相同的錯誤。現象如下
>>> import xml Traceback (most recent call last): File "<stdin>", line 1, in <module> File "xml.py", line 1, in <module> import xml.etree.ElementTree as ET ImportError: No module named etree.ElementTree
問題分析
這個現象奇怪的地方在於手工import xml正常來說是和我原來的文件不相干的,正常來說應該提示如下錯誤
Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named xml
開始以為是沒有退出環境的原因,退出重新登錄依然如此。考慮import模塊導入加載的順序。python首先查找當前路徑、然后查找lib目錄、site-packages目錄(Python\Lib\site-packages)和環境變量PYTHONPATH設置的目錄。
這里,我們就知道是python代碼文件命名的原因,這樣就會導致import首先加載xml.py,從而導致問題發生。所以文件名不能命名為xml.py。
問題解決
刪除xml.py所在的目錄下的xml.pyc文件,修改文件名重新執行。