2

这是场景 - 我知道之前在 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 中从不同的“主”目录使用此代码,它似乎无论如何都可以工作我尝试什么。仅当我尝试与此第三方应用程序交互时才会出现此问题。

谢谢你的帮助!

4

1 回答 1

2

感谢 VooDooNOFX 的建议 - 在与 Siemens 支持人员讨论后,发现我的 psse33.exe 命令行执行需要一个额外的参数“-pyver 27”来指定应用程序需要使用哪个版本的 Python。希望这可以帮助其他遇到此问题的人。

于 2014-11-25T19:53:44.460 回答