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