PyLaTeX: pylatex.errors.Ошибка компилятора: компилятор LaTeX не найден

#python #latex #pylatex

#python #Латекс #pylatex

Вопрос:

Я пытаюсь запустить точный код отсюда, чтобы получить пример работы pylatex.

В каталоге, в котором я работаю, я скопировал и вставил ссылку:

 from pylatex import Document, Section, Subsection, Command
from pylatex.utils import italic, NoEscape
import pdflatex


def fill_document(doc):
    """Add a section, a subsection and some text to the document.

    :param doc: the document
    :type doc: :class:`pylatex.document.Document` instance
    """
    with doc.create(Section('A section')):
        doc.append('Some regular text and some ')
        doc.append(italic('italic text. '))

        with doc.create(Subsection('A subsection')):
            doc.append('Also some crazy characters: $amp;#{}')


if __name__ == '__main__':
    # Basic document
    doc = Document('basic')
    fill_document(doc)

    doc.generate_pdf(clean_tex=False,compiler='pdflatex')
    doc.generate_tex()

    # Document with `maketitle` command activated
    doc = Document()

    doc.preamble.append(Command('title', 'Awesome Title'))
    doc.preamble.append(Command('author', 'Anonymous author'))
    doc.preamble.append(Command('date', NoEscape(r'today')))
    doc.append(NoEscape(r'maketitle'))

    fill_document(doc)

    doc.generate_pdf('basic_maketitle', clean_tex=False)

    # Add stuff to the document
    with doc.create(Section('A second section')):
        doc.append('Some text.')

    doc.generate_pdf('basic_maketitle2', clean_tex=False)
    tex = doc.dumps()  # The document as string in LaTeX syntax
  

Я постоянно получаю ошибку:

 Traceback (most recent call last):
  File "test.py", line 26, in <module>
    doc.generate_pdf(clean_tex=False,compiler='pdflatex')
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.7/site-packages/pylatex/document.py", line 280, in generate_pdf
    'Either specify a LaTex compiler '  
pylatex.errors.CompilerError: No LaTex compiler was found
  

Вы можете увидеть некоторые вещи, которые я пробовал, основываясь на предложениях других людей:
1. если я просто открою консоль python в этом каталоге и наберу:

 from pylatex import Document, Section, Subsection, Command
from pylatex.utils import italic, NoEscape
import pdflatex
  

ошибок нет, что означает, что импорт был успешным.

  1. Я видел еще одну рекомендацию о том, что perl должен быть установлен, и это:

    localhost:test1 $ perl —version: возвращает информацию о perl

  2. Я указал компилятор, как было предложено в другом месте в StackOverflow: ‘doc.generate_pdf(clean_tex= False,compiler =’pdflatex’)’

Что еще я могу сделать? Конечная цель состоит в том, что я сгенерировал строки и изображение с помощью python, и я хочу поместить их как в PDF, так и в формат, на случай, если есть лучшая альтернатива, которую кто-нибудь может предложить. P.s. Я знаю об обмене стеками tex, но мне особенно нужен способ для latexвзаимодействие с python, вот почему я спросил здесь.

Комментарии:

1. вы нашли решение этой проблемы? Я сталкиваюсь с той же проблемой

2. К сожалению, я этого не сделал, извините, но мне очень интересно его найти!

Ответ №1:

Очевидно, вам нужно будет запустить эти две зависимости apt-get

 sudo apt-get install latexmk
sudo apt-get install -y texlive-latex-extra
  

также установите pdflatex с помощью pip

pip install pdflatex

затем используйте

doc.generate_pdf(compiler='pdflatex')

Комментарии:

1. Я мог бы установить pdflatex через pip, но я не могу установить latexmk : я не могу сделать apt-get install так, как мне нужно, чтобы запустить это без sudo . Однако ошибка гласит, что либо укажите компилятор LaTeX, либо убедитесь, что у вас установлен latexmk или pdfLaTex . latexmk Действительно ли это необходимо? Как я могу обойти это без sudo ?

Ответ №2:

Для меня, на CentOS 8, мне пришлось запустить:

 pip install pylatex
sudo dnf install texlive
sudo dnf install texlive-lastpage
  

Тогда это сработало для меня.

Ответ №3:

У меня была такая же ошибка, и моя проблема заключалась в том, что я забыл добавить pdflatex (через MiKTeX) в свой путь к среде в Windows. Мой код работал после перезагрузки моего терминала. Кстати, я не установил Perl.