Aws lambda 无服务器框架-Python和Requirements.txt
使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表。(例如请求) 然而,我最终部署的函数失败了,因为这些依赖项似乎没有作为打包的一部分安装 “无法导入模块处理程序”:没有名为请求的模块” 我假设是无服务器安装了pip,但是我得到的zip文件很小,很明显它没有安装pip,无论是设计上的原因还是我的错,因为我遗漏了什么?是不是因为是Lambda做的?如果是这样,我遗漏了什么?)Aws lambda 无服务器框架-Python和Requirements.txt,aws-lambda,serverless-framework,Aws Lambda,Serverless Framework,使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表。(例如请求) 然而,我最终部署的函数失败了,因为这些依赖项似乎没有作为打包的一部分安装 “无法导入模块处理程序”:没有名为请求的模块” 我假设是无服务器安装了pip,但是我得到的zip文件很小,很明显它没有安装pip,无论是设计上的原因还是我的错,因为我遗漏了什么?是不是因为是Lambda做的?如果是这样,我遗漏了什么?) 是否有文件说明需要做什么以及它是如何工作的?pip是
是否有文件说明需要做什么以及它是如何工作的?pip是在无服务器端安装这些还是在aws lambda端安装?无服务器框架不处理
pip安装
。有关现在可以使用的解决方案,请参见。它适用于纯Python和需要本机编译的库(使用Docker):
一个无服务器v1.x插件,用于自动绑定requirements.txt中的依赖项,并使它们在PYTHONPATH中可用
需要无服务器>=v1.12您需要安装
无服务器python要求
和
然后将以下内容添加到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
将会发生的事情是,serverless python requirements
将使用lambda环境在docker中构建python包,然后将其压缩,以便与其余代码一起上载
我不认为无服务器运行pip。在部署serverless项目之前,您必须自己运行它。下面的详细指南如果您在使用
$serverless deploy
命令时遇到问题,您可能必须删除冗余的节点模块,这些模块可能在过去工作过,就像我的情况一样。我必须执行以下命令:``$rm-rf node_modules$npm install serverless python requirements$serverless deploy```
(venv) $ pip install <NAME>
(venv) $ pip freeze > requirements.txt
$ serverless deploy