Python开发中遇到的各种坑

Python XML No module named etree

2018-11-25  本文已影响0人  Magna

在使用Python解析XML的过程,使用以下import代码:

import xml.etree.ElementTree as ET

时遇到莫名其妙的 ImportError: No module named etree.ElementTree错误

使用了各种方法调试,包括尝试重新pip install,pycharm里试找xml包安装,完全无效。

因为当时考虑到系统上装了python2.7和python3.7两个版本,并且没有使用合适的python环境管理工具,而是度娘了一个可能存在问题的,重命名python2.exe ,python3.exe的方法管理不同的python版本的方法,于是卸载了机器上的所有python环境,重新使用conda尝试对不同版本的python进行管理,期间还跳了一个坑,安装了清华开源镜像(https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)提供的conda工具,遇到无法解决的源访问问题,只好重新卸载,安装了官方的anacond版,总算问题解决。

重新配置环境以后,在pycharm里测试了两个版本的python环境,import xml.etree.ElementTree as ET 错误继续报出,几乎开始怀疑人品。

最后求助于百度,搜索了很久,网友们好像都挻顺利的,几乎没人提过有这种情况。

后来,终于在一个不起眼的角落看到了这么一句话:不要用xml 作为文件名。

于是立刻把代码文件命名成了xml.py,马上重命名,再运行。结果还是不行,仔细排查,发现生成的xml.pyc文件还存在,有可能是它造成的影响,删了重试,终于顺利运行。

Python引用包的时候应该是先在代码文件所在的文件夹查找,把文件名命名为xml.py时,import xml.etree.Element 这一句就在当前文件夹找到了自身源文件,自己写的xml.py里面根本就没有etree.Element这些模块,当然是要报错了。

PS:发现一个诡异的事情,pycharm里的 git管理工具也对xml.py这个文件标红,并且所在package的init.py也标红,无法推送到git云端,更改文件名以后,该文件的红名消失,可以上传。init.py的坑还在,继续耿总吧。

上一篇下一篇

猜你喜欢

热点阅读