Я получаю ошибку ниже при развертывании Cloud Function
.
Deployment failure:
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/worker.py", line 256, in check_or_load_user_function
_function_handler.load_user_function()
File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py", line 166, 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 2, in <module>
from bs4 import BeautifulSoup
ModuleNotFoundError: No module named 'bs4'
Вот так выглядит моя упакованная структура zip:
.
├── main.py
└── requirements.txt
Вот так выглядит мой файл require.txt:
beautifulsoup4==4.7.1
boto3==1.9.75
botocore==1.12.75
cachetools==3.0.0
certifi==2018.11.29
chardet==3.0.4
docutils==0.14
google-api-core==1.7.0
google-auth==1.6.2
google-cloud-core==0.29.1
google-cloud-datastore==1.7.3
google-resumable-media==0.3.2
googleapis-common-protos==1.5.5
grpcio==1.17.1
idna==2.8
jmespath==0.9.3
protobuf==3.6.1
pyasn1==0.4.5
pyasn1-modules==0.2.3
python-dateutil==2.7.5
pytz==2018.9
requests==2.21.0
rsa==4.0
s3transfer==0.1.13
six==1.12.0
soupsieve==1.6.2
urllib3==1.24.1
Вот как я импортирую bs4
модуль в main.py
:
from bs4 import BeautifulSoup
import requests
from datetime import datetime
import boto3
import re
Согласно документации файл require.txt должен находиться в том же каталоге, что и файл main.py, содержащий код вашей функции. что вы можете видеть, что это так.
Обратите внимание, что это нормально работает с моей локальной системой.
Сервисная учетная запись, прикрепленная к функции, имеет следующие роли:
Cloud Datastore User
Storage Admin
Когда я захожу в Cloud Functions UI из консоли. Я вижу, что main.py и require.txt оба показывают там с правильным содержанием на вкладке source
.
Что мне здесь не хватает?
Обновление
Разобрался с проблемой. Если я упомяну beautifulsoup4==4.7.1
в файле needs.txt, произойдет сбой. Но если я не укажу там номер версии, это сработает. beautifulsoup4
Не уверен, почему, хотя. Есть идеи?