Установите Pandoc внутри функции Azure для Pypandoc

#python #azure-functions #continuous-deployment #pandoc #pypandoc

#python #azure-функции #непрерывное развертывание #pandoc #pypandoc

Вопрос:

Я использую пакет pypandoc для преобразования файлов DOC / DOCX в HTML. Для этого необходимо, чтобы Pandoc уже был установлен. Когда оба пакета устанавливаются с помощью requirements.txt файла, он работает локально. Однако, когда я развертываю его как функцию Azure, он всегда выдает ошибку «модуль не найден». (pypandoc не может найти pandoc по тому же пути, потому что он устанавливается в другом месте.)

Это похоже на известную проблему. Pandoc не устанавливается по тому же пути, что и Pyandoc, и предлагается несколько решений. Но они только локально.

Опробованные варианты:

  1. Используйте pandoc_download
       from pypandoc.pandoc_download import download_pandoc
     
  2. Используйте wdc. Это не устраняет проблему.
  3. Используйте файлы wheel, которые включают Pandoc.

Прямо сейчас я использую mammoth для преобразования, точность которого немного ниже, но он развертывается на Az. Как я могу заставить Pypandoc работать как функция Azure? Как я могу установить Pandoc в месте, где Pypandoc может его найти? Или, как я могу сообщить Pypandoc, где найти Pandoc?

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

1. если функции Azure поддерживают произвольные образы docker, см. github.com/pandoc/dockerfiles

Ответ №1:

Я тестирую его на своей стороне, устанавливаю pandoc и pypandoc локально с помощью команды pip install pypandoc , pip install pandoc но не устанавливаю их с помощью requirements.txt . Функция отлично работает на локальном.

И затем я генерирую requirements.txt , выполнив команду pip freeze > requirements.txt . Затем разверните функцию в Azure, выполнив команду func azure functionapp publish <your function app name> --build remote , azure установит модули в соответствии с содержимым requirements.txt . После развертывания функция успешно выполняется на портале Azure.