15

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

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

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

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

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

4

3 回答 3

24

你需要安装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

venv使用 pip 安装任何依赖项 - 请注意,在 CLI 中,您可以通过终端文本左侧的 来判断 venv 是否处于活动状态

(venv) $ pip install <NAME>
(venv) $ pip freeze > requirements.txt

确保您已打开 docker,然后正常部署无服务器

$ serverless deploy

将会发生的是,serverless-python-requirements它将使用 lambda 环境在 docker 中构建你的 python 包,然后将它们压缩起来,准备与你的其余代码一起上传。

完整指南在这里

于 2018-04-25T16:21:29.900 回答
6

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

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

需要无服务器 >= v1.12

于 2017-08-29T19:59:28.890 回答
0

无服务器框架不处理pip install. 有关解决方案,请参阅https://stackoverflow.com/a/39791686/1111215

于 2016-10-18T08:31:25.723 回答