【问题标题】:can't import pubsub on aws lambda无法在 aws lambda 上导入 pubsub
【发布时间】:2017-11-19 10:47:13
【问题描述】:

我有一个使用 Google Cloud Pubsub 的 Python 应用,如下所示:

from google.cloud import pubsub

它在本地运行良好,但在调用 AWS Lambda 函数时我得到:

Unable to import module 'handler': cannot import name 'pubsub'

没有其他错误或细节。

我的 requirements.txt 文件:

requests
google-cloud-datastore==1.4.0
google-cloud-pubsub==0.29.0
sqlalchemy

我感觉这可能与 pubsub 的 psutil 要求有关,因为当我尝试在 pubsub 之前导入 psutil 时,我收到此错误:

Unable to import module 'handler': cannot import name '_psutil_linux'

【问题讨论】:

标签: aws-lambda google-cloud-pubsub


【解决方案1】:

如果您使用serverless 库,解决方案是执行以下操作:

删除项目目录中的 .requirements 文件夹

将此添加到您的 serverless.yml 文件(文档here):

custom:
  pythonRequirements:
    dockerizePip: true

【讨论】:

  • 您应该更新您的问题,并可能将其标记为使用无服务器框架
【解决方案2】:

您需要将 lambda 函数预打包到一个包含外部模块的 zip 文件中。

pip install module-name -t /path/to/project-dir

然后使用包含的模块压缩您的代码并上传 zip 文件。

供参考:http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 2021-01-09
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多