在學習使用Python解析XML的過程中,使用官方文檔https://docs.python.org/2/library/xml.etree.elementtree.html中的例子進行測試,代碼如下:
import xml.etree.ElementTree as ET tree = ET.parse('/home/huayuan/code/xml.py') root = tree.getroot()
試着運行,沒想到竟然會報錯:
Traceback (most recent call last):
File "/home/huayuan/code/xml.py", line 1, in <module>
import xml.etree.ElementTree as ET
File "/home/huayuan/code/xml.py", line 1, in <module>
import xml.etree.ElementTree as ET
ImportError: No module named etree.ElementTree
[Finished in 0.1s with exit code 1]
檢查Python的庫路徑/usr/lib/python2.7/xml/etree,發現xml.etree.Element包是正常的,如下圖:
看報錯提示是import xml.etree.ElementTree as ET 這一句有問題,於是想盡辦法對它進行不同的修改,結果還是於事無補。
最後只能求助於百度了,搜索了很久,發現網友們好像都挻順利的,幾乎沒人提過有這種情況。
後來,終於在一個不起眼的角落看到了這麼一句話:不要用xml 作爲文件名。
本人正是把代碼文件命名成了xml.py,馬上重命名,再運行。結果還是不行,仔細排查,發現生成的xml.pyc文件還存在,有可能是它造成的影響,刪了重試,終於順利運行。
總結:
回過頭來看,這個可以說是個低級錯誤,Python引用包的時候應該是先在代碼文件所在的文件夾查找,把文件名命名爲xml.py時,import xml.etree.Element 這一句就在當前文件夾找到了自身源文件,自己寫的xml.py裏面根本就沒有etree.Element這些模塊,當然是要報錯了。