Существует два способа указать зависимости для 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 .