Ошибка сборки: подробности ошибки сборки недоступны при развертывании облачной функции Python Google с локальным пакетом - PullRequest
1 голос
/ 31 марта 2020

У меня есть облачная функция Google, которая обрабатывает сообщения из очереди. Когда я помещаю все модули в root функции (где живут main.py и requirements.txt), все работает нормально. Если я перемещаю модули в локальный пакет, как показано здесь, в документе. , то при развертывании функции путем загрузки Zip-файла с помощью облачной консоли я получаю сообщение об ошибке Build failed: Build error details not available без дополнительной информации .

.
├── main.py
├── module_one.py
├── module_two.py
└── requirements.txt

в root архива, который я загружаю, работает просто отлично.

.
├── main.py
├── requirements.txt
├── local_package_one/
│   ├── __init__.py
│   └── module_one.py
└── local_package_two/
    ├── __init__.py
    └── module_two.py

зарабатывает мне Build failed: Build error details not available. Во второй конфигурации я обновляю все затронутые операторы import. Сначала я заподозрил файл requirements.txt, так как он не показан в примере, но здесь они утверждают, что он должен работать просто отлично. В этом примере также показана папка верхнего уровня, названная в честь функции, поэтому я попытался поместить ее в root архива со всем, что внутри него, и получил те же результаты.

Я изменил импорт из

from module_one import MyClass

до

from local_package_one.module_one import MyClass

1 Ответ

1 голос
/ 31 марта 2020

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

Этот общий шаблон работает, например:

$ tree
.
├── local_package_one
│   ├── __init__.py
│   └── module_one.py
├── local_package_two
│   ├── __init__.py
│   └── module_two.py
├── main.py
└── requirements.txt

$ cat main.py
from local_package_one.module_one import hello
from local_package_two.module_two import world

def test(request):
    return hello + ' ' + world

$ cat local_package_one/module_one.py
hello = "hello"

$ cat local_package_two/module_two.py
world = "world"

$ gcloud functions deploy test --runtime python37 --trigger-http --allow-unauthenticated
Deploying function (may take a while - up to 2 minutes)...done.

$ curl https://<my-function>.cloudfunctions.net/test
hello world%
...