【发布时间】:2019-02-07 02:46:39
【问题描述】:
我们正在为 Python 中的 Alexa 技能开发一个 AWS Lambda 函数,并使用 pip 将 ask-sdk 包安装到我们的 dist/ 目录:
pip install -t dist/ ask-sdk
问题在于-t dist/,因为pip 想要在其中拥有所有依赖项,即使它们是在系统范围内安装的。
现在,ask-sdk 依赖于 boto3,它引入了大量其他包。然而,AWS Lambda 运行时环境提供了boto3,因此无需将其及其依赖项与我们的代码打包。我确实在系统中安装了boto3 并且import boto3 工作,所以我认为pip 应该很高兴,但因为-t dist/ 它总是安装它。
我能否以某种方式仅安装 ask-sdk 及其系统中不存在的依赖项,例如ask-sdk-core,但不是那些已经安装的?
一种方法是列出所有模块并使用pip --no-deps,但这意味着需要手动持续跟踪依赖关系,我们希望避免这种情况。
我想以某种方式告诉pip:如果软件包已经安装,即使不在-t dist/ 中,也不要在dist/ 中复制。
这可能吗?
谢谢!
【问题讨论】:
-
如何部署 lambda 函数?你检查过无服务器吗?
-
@ManojJadhav - 我们使用 AWS SAM,但部署不是问题。我们要先打包,同时排除boto3及其依赖。
标签: python pip aws-lambda