【问题标题】:Serverless Framework - Python and Requirements.txt无服务器框架 - Python 和 Requirements.txt
【发布时间】:2017-02-25 12:52:25
【问题描述】:

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

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

'无法导入模块'处理程序':没有名为请求的模块'

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

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

【问题讨论】:

标签: aws-lambda serverless-framework


【解决方案1】:

无服务器框架不处理 pip install。解决方法见https://stackoverflow.com/a/39791686/1111215

【讨论】:

    【解决方案2】:

    现在您可以使用serverless-python-requirements。它适用于纯 Python 和需要本机编译的库(使用 Docker):

    一个无服务器 v1.x 插件,用于自动捆绑 requirements.txt 中的依赖项并使其在您的 PYTHONPATH 中可用。

    需要无服务器 >= v1.12

    【讨论】:

      【解决方案3】:

      你需要安装serverless-python-requirementsdocker

      $ npm install serverless-python-requirements
      

      然后将以下内容添加到您的serverless.yml

      plugins:
         - serverless-python-requirements
      
      custom:
        pythonRequirements:
           dockerizePip: non-linux
      

      确保您的 python 虚拟环境在 CLI 中处于活动状态:

      $ 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

      【讨论】:

      • 如果您在使用 $ serverless deploy 命令时遇到问题,您可能必须删除过去可能像我一样工作的冗余 node_modules。我必须执行以下命令:``` $ rm -rf node_modules $ npm install serverless-python-requirements $ serverless deploy ```
      猜你喜欢
      • 2020-08-26
      • 2020-10-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 2020-11-27
      相关资源
      最近更新 更多