Любые идеи об этом запутанном Python "Ошибка модуля с именем expat; Использовать SimpleXMLTreeBuilderInstead" ошибка?
Вот сценарий - я знаю, что этот вопрос уже задавался ранее в Stackru в немного других ситуациях, но, к сожалению, ни один из предоставленных ответов / предложений не помог мне.
У меня есть файл 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, в соответствии с некоторыми другими ответами на этот вопрос в Stackru, но он дает мне точно такую же ошибку.
Если я открываю свою оболочку Python (кстати, я использую Python 2.7.8) и набираю "import xml.parsers.expat", я не получаю эту ошибку, и все выглядит нормально импортируемым. Я также могу выполнить команду ElementTree.parse (myXmlFilePath) без проблем внутри оболочки Python. Однако, когда я пытаюсь сделать это через мой файл Python, который я передаю в PSS\E API (PSSE - сторонний продукт с API-интерфейсом Python), я получаю ошибку, упомянутую выше, выполнив те же самые шаги, которые успешно в оболочке Python.
Есть ли у какого-нибудь Python-гуру какие-нибудь советы по этому поводу? Я не думаю, что путь к файлу будет иметь значение, поскольку переменная path моей системы включает в себя местоположение моей установки Python, и я пытался использовать этот код в оболочке Python из разных "домашних" каталогов, и, похоже, он работает независимо от того, что я пытаюсь Проблема возникает только тогда, когда я пытаюсь подключиться к этому стороннему приложению.
Спасибо за любую помощь!
1 ответ
Спасибо за предложение VooDooNOFX - после некоторого обсуждения со службой поддержки Siemens выяснилось, что для выполнения psse33.exe из командной строки требовался дополнительный аргумент "-pyver 27", чтобы указать, какую версию Python необходимо использовать приложению. Надеюсь, это поможет кому-нибудь еще столкнуться с этой проблемой.