Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 876
AbtPst Avatar asked Nov 10 '15 15:11

AbtPst


4 Answers

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.

like image 72
Mike Müller Avatar answered Oct 19 '22 00:10

Mike Müller


Your script name is: xml.py?

Change it and it should work.

like image 33
ABDERRAZZAQ LAANAOUI Avatar answered Oct 19 '22 02:10

ABDERRAZZAQ LAANAOUI


A local .py file overwrites the pre-defined module. Remove all the files that named xml in the current folder.

like image 2
Julian Eccleshall Avatar answered Oct 19 '22 01:10

Julian Eccleshall


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.

like image 1
Amos Egel Avatar answered Oct 19 '22 00:10

Amos Egel