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:

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.
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.
Your script name is: xml.py?
Change it and it should work.
A local .py file overwrites the pre-defined module. Remove all the files that named xml in the current folder.
In addition to the answers that already point to local Python modules: In case you have added other directories to your path, also make sure to check those for modules called xml.py or packages called xml.
For me that was the issue when calling Sphinx with a conf.py file that added several directories to the path.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With