Azure Функция - План обслуживания приложения - Установка пакета git - PullRequest
0 голосов
/ 03 апреля 2020

Я написал Azure Funciton API (с использованием python runtime) для автоматизации процесса git checkin (usin gitPython) для некоторых работ, которые мы делаем. Это прекрасно работает в моей местной среде. Однако, когда я попытался опубликовать его в функции azure, API не удалось.

 ---> Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcException: Result: Failure
Exception: ImportError: Failed to initialize: Bad git executable.
The git executable must be specified in one of the following ways:
    - be included in your $PATH
    - be set via $GIT_PYTHON_GIT_EXECUTABLE
    - explicitly set via git.refresh()

All git commands will error until this is rectified.

This initial warning can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:
    - quiet|q|silence|s|none|n|0: for no warning or exception
    - warn|w|warning|1: for a printed warning
    - error|e|raise|r|2: for a raised exception

Example:
    export GIT_PYTHON_REFRESH=quiet

Stack:   File "/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker/dispatcher.py", line 242, in _handle__function_load_request
    func_request.metadata.entry_point)
  File "/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker/loader.py", line 66, in load_function
    mod = importlib.import_module(fullmodname)
  File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/site/wwwroot/tableauwkbcheckin/__init__.py", line 7, in <module>
    import git
  File "/home/site/wwwroot/.python_packages/lib/site-packages/git/__init__.py", line 85, in <module>
    raise ImportError('Failed to initialize: {0}'.format(exc))

Причина была GitPython, зависит от исполняемого файла "git" в системе, в которую импортируется функция azure.

Мой вопрос: Как установить git на функцию Azure с помощью сервисного плана приложения. В общем, если нам нужно установить и использовать какой-либо дополнительный пакет для приложения-функции, как это сделать в функции azure.

В качестве обходного пути я использую os.system () для установки git двоичный файл перед импортом git.

1 Ответ

0 голосов
/ 08 апреля 2020

Я считаю, что это хороший случай для использования пользовательских контейнеров с функциями . Поскольку вы будете собирать контейнер, вы можете убедиться, что вы установили все внешние зависимости.

Альтернативой может быть поставка исполняемого файла git в составе функционального пакета и установка GIT_PYTHON_GIT_EXECUTABLE настройка приложения на %HOME%\site\wwwroot\<path-to-git-in-your-package> (windows) или $HOME/site/wwwroot/<path-to-git-in-your-package> (linux)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...