关于这个令人困惑的Python的任何想法“没有名为expat的模块;使用SimpleXMLTreeBuilderInstead”错误?

时间:2014-11-17 21:29:41

标签: python python-2.7 elementtree expat-parser psse

以下是这个场景 - 我知道这个问题之前已经在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")

我已尝试使用SimpleXMLTreeBuilder,而不是在StackOverflow上对此问题的其他一些答案,但它给了我完全相同的错误。

如果我打开我的Python shell(我顺便使用Python 2.7.8)并键入" import xml.parsers.expat",我没有收到此错误一切似乎都是正常导入的。我也可以在Python shell中运行ElementTree.parse(myXmlFilePath)命令而不会出现任何问题。但是,当我尝试通过我的Python文件执行此操作时,我已经加入PSS \ E API(PSSE是带有Python API的第三方产品),我通过遵循相同的步骤得到上面提到的错误这在Python shell中是成功的。

任何Python大师都对此有任何建议吗?我不认为文件路径会有所不同,因为我的系统的路径变量包含我的Python安装位置,并且我已尝试在此处使用此代码来自不同" home"的Python shell目录,它似乎工作,无论我尝试什么。只有在我尝试连接到第三方应用程序时才会出现此问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

感谢VooDooNOFX的建议 - 经过与西门子支持的一些讨论后,发现我的命令行执行psse33.exe需要一个额外的参数" -pyver 27"指定应用程序需要使用的Python版本。希望这可以帮助其他任何人遇到这个问题。