Обработка зависимостей


Существует два способа указать зависимости для Cloud Functions , написанных на Python: с помощью файла requirements.txt менеджера пакетов pip или упаковывая локальные зависимости вместе с вашей функцией.

Спецификация зависимостей с использованием стандарта Pipfile/Pipfile.lock не поддерживается. Ваш проект не должен включать эти файлы.

Указание зависимостей с помощью pip

Зависимости в Python управляются с помощью pip и выражаются в файле метаданных, называемом requirements.txt . Этот файл должен находиться в том же каталоге, что и файл main.py , содержащий код вашей функции.

При развертывании или повторном развертывании вашей функции Cloud Functions использует pip для загрузки и установки последней версии ваших зависимостей, как указано в файле requirements.txt . Файл requirements.txt содержит одну строку на пакет. Каждая строка содержит имя пакета и, при необходимости, запрошенную версию. Для получения более подробной информации см. справочник requirements.txt .

Чтобы предотвратить влияние изменений версий зависимостей на вашу сборку, рассмотрите возможность закрепления пакетов зависимостей за определенной версией.

Ниже приведен пример файла requirements.txt :

functions-framework
requests==2.20.0
numpy

Functions Framework — это обязательная зависимость для всех функций. Хотя Cloud Functions устанавливает ее от вашего имени при создании функции, мы рекомендуем вам включить ее как явную зависимость для ясности.

Если ваша функция опирается на частные зависимости, мы рекомендуем вам зеркалировать functions-framework в вашем частном реестре. Включите зеркалируемый functions-framework как зависимость в вашу функцию, чтобы избежать установки пакета из публичного интернета.

Упаковка локальных зависимостей

Вы также можете упаковывать и развертывать зависимости вместе с вашей функцией. Этот подход полезен, если ваша зависимость недоступна через менеджер пакетов pip или если доступ к Интернету вашей среды Cloud Functions ограничен.

Например, вы можете использовать следующую структуру каталогов:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

Затем вы можете импортировать код как обычно из localpackage , используя следующий оператор import .

# Code in main.py
from localpackage import script

Обратите внимание, что этот подход не запустит файлы setup.py . Пакеты с этими файлами все еще могут быть объединены, но могут работать некорректно в Cloud Functions .