无服务器框架 - Python和Requirements.txt

时间:2016-10-16 13:58:48

标签: aws-lambda serverless-framework

使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表。 (例如请求)。

但是我的部署函数失败了,因为这些依赖项似乎没有作为打包的一部分安装

'无法导入模块'handler':没有名为requests'

的模块

我认为它是无服务器的pip安装,但是我得到的zip文件很小,很明显它没有这样做,无论是设计还是我的错,因为我错过了什么?是因为它的Lambda这样做了吗?如果是这样,我错过了什么?)

是否有关于执行此操作所需内容及其工作原理的文档?是pip安装这些还是在aws lambda端无服务器?

帮助表示感谢!

4 个答案:

答案 0 :(得分:8)

您需要安装serverless-python-requirementsdocker

$ 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包,然后将它们压缩起来,准备上传其余的代码。

Full guide here

答案 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文件 部署

自述文件通过命令逐步进行了

您应该变得容易