【问题标题】:cloud function - unable to find module云功能 - 找不到模块
【发布时间】:2025-11-28 06:05:02
【问题描述】:

我在部署 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

这就是我的 requirements.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

这就是我在main.py 中导入bs4 模块的方式:

from bs4 import BeautifulSoup
import requests
from datetime import datetime
import boto3
import re

根据documentation,requirements.txt 文件必须与包含您的功能代码的 main.py 文件位于同一目录中。你可以看到它是。

请注意,这在我的本地系统上运行良好。

附加到函数的服务帐户具有以下角色:

Cloud Datastore User
Storage Admin

当我从控制台转到 Cloud Functions UI 时。我可以看到 main.py 和 requirements.txt 都在source 选项卡中显示了正确的内容。

我在这里错过了什么?

更新

找出问题所在。如果我在 requirements.txt 文件中提到beautifulsoup4==4.7.1,它会失败。但是,如果我没有在其中指定版本号,它就可以工作。 beautifulsoup4

不知道为什么。有什么想法吗?

【问题讨论】:

  • 我无法重现 beautifulsoup4==4.7.1 的部署问题,是否有可能您在部署之前没有使用添加的依赖项保存文件?
  • 没有。我对其进行了验证并多次手动编辑了 requirements.txt 文件。我正在使用 python 3.7 环境。可能是这个问题?
  • 抱歉,即使使用您的确切 requirements.txt 文件,我也无法复制它。我也在使用 Python 3.7 环境。
  • 我正在使用lxml(例如BeautifulSoup(body, "lxml")),而我的CF(云功能)正在默默地失败。在我将lxml 添加到requirements.txt 之后,CF 又开始工作了。

标签: python beautifulsoup google-cloud-platform google-cloud-functions


【解决方案1】:

就我而言,当我将汤定义为:

soup = BeautifulSoup(response.content, features="xml")

调用soup 时出错(说soup 未定义)。将 lxml 添加到我的 requirements.txt 解决了这个问题。

【讨论】: