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


Существует два способа указать зависимости для облачных функций, написанных на 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.