Я внедряю облачную функцию Google на основе кода в хранилище BitBucket.Я уже связал учетную запись BitBucket с Google Cloud «Source Repositories», и функция Google может найти репозиторий и т. Д. Проблема заключается в том, что моей функции main.py необходимо вызывать несколько функций в других пакетах / модулях в моем репозитории.У меня есть несколько простых операторов импорта в верхней части моего файла main.py, например:
import base64
import json
from datetime import datetime
from competitor_scrape.headless import headless_browser
...
Первые несколько строк загружаются нормально, но 4-я строка (та, которая вызывает модуль / функцию в моем BitBucketхранилище) вызывает эту ошибку в функциях Google, когда я пытаюсь определить мою облачную функцию Google с помощью main.py в моем хранилище:
message: "Function load error: Code in file main.py can't be loaded.
Did you list all required modules in requirements.txt?
Detailed stack trace: Traceback (most recent call last):
File "/env/local/lib/python3.7/site-packages/google/cloud/functions_v1beta2/worker.py", line 211, in check_or_load_user_function
_function_handler.load_user_function()
File "/env/local/lib/python3.7/site-packages/google/cloud/functions_v1beta2/worker.py", line 140, in load_user_function
spec.loader.exec_module(main)
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/user_code/main.py", line 4, in <module>
from competitor_scrape.headless import headless_browser
ModuleNotFoundError: No module named 'competitor_scrape.headless'
Она спрашивает, есть ли у меня список всех необходимых модулейв файле require.txt ".Могу ли я перечислить модули из своего собственного хранилища?Если так, как я должен делать это?Я не смог найти никакой документации о том, как это сделать.
Мой текущий файл needs.txt выглядит следующим образом:
google-cloud-pubsub
numpy==1.14.5
pandas==0.22.0
psycopg2==2.7.4
selenium==3.4.3
geopy==1.11.0
googlemaps==2.5.1
ratelimiter==1.2.0
sqlalchemy==1.2.0
zeep==2.5.0
РЕДАКТИРОВАТЬ / ОБНОВИТЬ
Моя файловая структура репозитория сейчас выглядит примерно так:
.
├── competitor_scrape
│ ├── __init__.py
│ └── headless.py
├── main.py
└── requirements.txt
headless_browser
- это функция, определенная в headless.py
.Однако в этот момент мой __init__.py
внутри competitor_scrape
пуст (он был автоматически сгенерирован PyCharm).Кажется, что __init__.py
, вероятно, является корнем проблемы.Как мне заполнить этот скрипт, чтобы скрипты / функции в competitor_scrape
были доступны для облачной функции Google?