#python #azure-functions #continuous-deployment #pandoc #pypandoc
#python #azure-функции #непрерывное развертывание #pandoc #pypandoc
Вопрос:
Я использую пакет pypandoc для преобразования файлов DOC / DOCX в HTML. Для этого необходимо, чтобы Pandoc уже был установлен. Когда оба пакета устанавливаются с помощью requirements.txt
файла, он работает локально. Однако, когда я развертываю его как функцию Azure, он всегда выдает ошибку «модуль не найден». (pypandoc не может найти pandoc по тому же пути, потому что он устанавливается в другом месте.)
Это похоже на известную проблему. Pandoc не устанавливается по тому же пути, что и Pyandoc, и предлагается несколько решений. Но они только локально.
Опробованные варианты:
- Используйте pandoc_download
from pypandoc.pandoc_download import download_pandoc
- Используйте wdc. Это не устраняет проблему.
- Используйте файлы 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.