Scaleway Serverless函数部署:无法加载numpy依赖求助
解决Scaleway Serverless函数无法加载numpy依赖的问题
核心问题分析
报错No module named 'numpy'说明依赖未被正确打包或安装到部署包中,主要原因可能是插件配置、打包规则或CI环境设置不当。
修复步骤
1. 规范插件安装方式
全局安装Serverless插件易导致版本兼容问题,应将插件添加到项目本地依赖:
- 更新
package.json的devDependencies,添加serverless-python-requirements:
{ "devDependencies": { "serverless-scaleway-functions": "^0.4.3", "serverless-python-requirements": "^6.0.0" } }
- 修改GitLab CI脚本,移除全局插件安装,改用本地安装:
script: - echo "Deploying to dev..." - npm install -g serverless - cd http_function - npm install - serverless deploy
2. 调整打包规则,确保依赖被包含
serverless-python-requirements默认将依赖安装到.vendor目录,需确保该目录被纳入打包范围:
修改serverless.yaml的package配置:
package: patterns: - '!node_modules/**' - '!.gitignore' - '!.git/**' - handler.py - requirements.txt - '.vendor/**'
或者启用插件自动打包功能,在custom.pythonRequirements中添加:
custom: pythonRequirements: package: true
3. 强制使用Docker打包兼容依赖
Scaleway运行环境为Linux,直接在CI环境安装的依赖可能因系统差异无法兼容,启用Docker打包:
修改serverless.yaml的custom部分:
custom: pythonRequirements: dockerizePip: true
插件会在Docker容器中模拟目标Python环境安装依赖,确保兼容性。
4. 对齐CI环境与运行时的Python版本
确保CI环境的Python版本与serverless.yaml中指定的python310一致,避免依赖版本不匹配:
在GitLab CI脚本中添加Python 3.10安装步骤:
script: - echo "Deploying to dev..." - apt-get update && apt-get install -y python3.10 python3.10-venv python3-pip - npm install -g serverless - cd http_function - npm install - serverless deploy
5. 验证打包结果
本地执行serverless package,解压生成的部署包,检查.vendor目录下是否存在numpy相关文件,确认依赖已被正确打包。
内容的提问来源于stack exchange,提问作者Benjamin Breton
相关产品推荐
相关产品推荐

