pythonxmlpython-3.x

Python Error : ImportError: No module named 'xml.etree'


I am simply trying to parse an XML file:

import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()

but this gives me:

import xml.etree.ElementTree as ET
ImportError: No module named 'xml.etree'

I am using Python 3.5. I have tried to same code with Python 2.7 and 3.4 but I always get this error. I thought that the XML libraries come as standard. Also, I can see that in my Lib folder:

enter image description here

So why can't it pick up the module? I am really confused. Do I have to make some change in an environment variable somewhere?

Please help.


Solution

  • Remove the file xml.py or a directory xml with a file __init__.py in it from your current directory and try again. Python will search the current directory first when importing modules. A file named xml.py or a package named xml in the current directory shadows the standard library package with the same name.

    As pointed out in a comment by KeshV, you also need to remove the file xml.pyc, if it exists. In Python 2 it will be in the same directory as xml.py. In Python 3 it will be in the sub directory __pycache__. In General, as long as the *.py file is around, you can savely delete the corresponding *.pyc file because Python will re-create it upon import of the *.py file.