这是场景 - 我知道之前在 StackOverflow 上已经在稍微不同的情况下提出过这个问题,但不幸的是,所提供的答案/建议对我没有任何帮助。
我有一个 Python 文件,它作为参数传递给 Python API,供另一个程序(PSS\E)在启动时使用。在我的 Python 文件中,我有一个部分使用 ElementTree 库将 XML 文件解析为树结构。这是我的代码:
from xml.etree.ElementTree import ElementTree, Element
...
tree = ElementTree.parse(myXmlFileName)
每当我调用 ElementTree.parse(myXmlFileName) 方法时,都会收到以下错误:
导入错误没有名为 expat 的模块;改用 SimpleXMLTreeBuilder
奇怪的是,这个错误是从ElementTree.py文件本身内部引发的,在 XMLParser 类定义内部:
class XMLParser(object):
def __init__(self, html=0, target=None, encoding=None):
try:
from xml.parsers import expat
except ImportError:
raise ImportError("No module named expat; use SimpleXMLTreeBuilder instead")
根据 StackOverflow 上这个问题的其他一些答案,我尝试使用 SimpleXMLTreeBuilder,但它给了我完全相同的错误。
如果我打开我的 Python shell(顺便说一下,我使用的是 Python 2.7.8)并输入“import xml.parsers.expat”,我不会收到此错误,并且所有内容似乎都已正常导入。我还可以在 Python shell 中运行 ElementTree.parse(myXmlFilePath) 命令,而不会出现任何问题。但是,当我尝试通过我输入 PSS\E API 的 Python 文件执行此操作时(PSSE 是具有 Python API 的第三方产品),我通过执行相同的步骤得到上述错误在 Python shell 中成功。
是否有任何 Python 大师对此有任何建议?我不认为文件路径会有所不同,因为我的系统的路径变量包括我的 Python 安装位置,并且我尝试在 Python shell 中从不同的“主”目录使用此代码,它似乎无论如何都可以工作我尝试什么。仅当我尝试与此第三方应用程序交互时才会出现此问题。
谢谢你的帮助!