当我在AWS上将一个(压缩的)部署程序包作为lambda函数上传时,bs4和google均出现“ no module named ...”错误。
我使用venv创建了一个虚拟环境,并安装了必需的依赖项 从虚拟环境中运行时,该应用程序运行良好。但是,当我将其压缩并作为lambda函数上传到AWS上时,“ bs4”和(如果出于调试原因而将bs4的导入散列)也出现了“ bs4”错误,并且“谷歌”。我检查了zip文件中的site-packages文件夹,它们似乎在那里。
AWS为什么说没有模块就没有模块?!
我正在Ubuntu上使用python3.6。
答案 0 :(得分:0)
Lambda需要ZIP和所有库以及您的主要python代码文件在同一文件夹中。 这是我的工作:
使用以下层次结构创建新的软件包文件夹
SET "test= 6:07:47,43"
将Project文件夹复制到temp文件夹
mkdir -p ./package/tmp/lib
将python站点软件包从虚拟环境复制到软件包中的temp文件夹中
cp -a ./$(PROJECT)/. ./package/tmp/
从temp文件夹中删除所有未使用的库(运行此特定lambda不需要这些库)
cp -a $(VIRTUAL_ENV)/lib/python2.7/site-packages/. ./package/tmp/
压缩临时包目录
rm -rf ./package/tmp/wheel*
这样创建的最终zip文件可以在Lambda上上传了。