#python #latex
#python #Латекс
Вопрос:
from sympy.parsing.latex import parse_latex
expr = parse_latex(r"frac {1 sqrt {a}} {b}")
Я пытаюсь использовать приведенный выше код для преобразования выражения latex в формат выражения sympy. Выдает ошибку даже после установки antlr4. Я использую версию python3.
ImportError: LaTeX parsing requires the antlr4 python package, provided by pip (antlr4-python2-runtime or antlr4-python3-runtime) or conda (antlr-python-runtime)
Как это решить? Есть ли какие-либо зависимости?
Ответ №1:
Основываясь на ImportError
, я думаю, вам нужно будет установить antlr4
Если вы используете pip, рассмотрите это сообщение в блоге от разработчика ядра Python:https://snarky.ca/why-you-should-use-python-m-pip /
Ответ №2:
Вам не только нужно установить antlr4
, но вам нужна конкретная версия.
На момент написания этой статьи (02/2023) parse_latex
функция sympy
реализована таким образом:
def parse_latex(sympy):
antlr4 = import_module('antlr4')
if None in [antlr4, MathErrorListener] or
version('antlr4-python3-runtime') != '4.10':
raise ImportError("LaTeX parsing requires the antlr4 Python package,"
" provided by pip (antlr4-python3-runtime) or"
" conda (antlr-python-runtime), version 4.10")
...
Которое явно проверяет номер версии.
Итак, вам необходимо иметь версию 4.10, как также указано в сообщении об ошибке:
pip install antlr4-python3-runtime==4.10
(Смотрите также инструкции по установке во время выполнения)
Затем вы можете протестировать это следующим образом:
>>> from sympy.parsing.latex import parse_latex
>>> parse_latex(r"frac {1 sqrt {a}} {b}")
(sqrt(a) 1)/b
Это может измениться в будущем, поскольку синтаксический анализ Latex является экспериментальным