多年来,我的代码中都有以下导入内容:
from etree.ElementTree import fromstring, parse, VERSION
今天我在移动(在Eclipse / pyDev中)一些不相关的源文件到另一个文件夹时犯了一个错误。该文件夹不是一个包,它花了我一些清理,重建和del * .pyc-s再次找到它们。这一部分已经解决了,但是现在,上面的导入打破了“无法进口......”。当我删除etree-prefix时,导入被解析,但在运行时我得到
from ElementTree import fromstring, parse, VERSION
File "C:\Program Files\Python\EPD-7.3-2x64\Lib\xml\etree\ElementTree.py", line 127, in <module>
from . import ElementPath
ValueError: Attempted relative import in non-package
出了什么问题......?
答案 0 :(得分:1)
你不应该这样做。
导入通常为from xml.etree.ElementTree import ...
;顶级包名称为xml.etree
,而不是etree
。
看起来好像是将xml.etree
包添加到Python sys.path
模块搜索路径中。 不要那样做。从C:\Program Files\Python\EPD-7.3-2x64\Lib\xml\etree
(或sys.path
环境变量)中删除PYTHONPATH
,然后从正确的顶级包名称导入。