使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表。 (例如请求)。
但是我的部署函数失败了,因为这些依赖项似乎没有作为打包的一部分安装
'无法导入模块'handler':没有名为requests'
的模块我认为它是无服务器的pip安装,但是我得到的zip文件很小,很明显它没有这样做,无论是设计还是我的错,因为我错过了什么?是因为它的Lambda这样做了吗?如果是这样,我错过了什么?)
是否有关于执行此操作所需内容及其工作原理的文档?是pip安装这些还是在aws lambda端无服务器?
帮助表示感谢!
答案 0 :(得分:8)
您需要安装serverless-python-requirements
和docker
$ npm install serverless-python-requirements
然后将以下内容添加到serverless.yml
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux
确保您在CLI中激活了python虚拟环境:
$ source venv/bin/activate
使用pip安装任何依赖项 - 请注意,在CLI中,您可以通过终端文本左侧的venv
判断venv是否处于活动状态
(venv) $ pip install <NAME>
(venv) $ pip freeze > requirements.txt
确保您已打开docker,然后正常部署无服务器
$ serverless deploy
将会发生serverless-python-requirements
使用lambda环境在docker中构建python包,然后将它们压缩起来,准备上传其余的代码。
答案 1 :(得分:6)
现在您可以使用serverless-python-requirements。它适用于纯Python和需要本机编译的库(使用Docker):
一个无服务器v1.x插件,用于自动捆绑requirements.txt中的依赖项,并使它们在您的PYTHONPATH中可用。
需要无服务器&gt; = v1.12
答案 2 :(得分:0)
无服务器框架无法处理pip install
。有关解决方案,请参阅https://stackoverflow.com/a/39791686/1111215
答案 3 :(得分:0)
遵循此git repo自述文件-https://github.com/shyam454/Flask_AWS
中提到的步骤创建虚拟环境 安装Python依赖关系 requirements.txt文件 部署
自述文件通过命令逐步进行了
您应该变得容易