【问题标题】:Can I set up PYTHONPATH for Lambda Function of Cloud9?我可以为 Cloud9 的 Lambda 函数设置 PYTHONPATH 吗?
【发布时间】:2019-12-14 03:44:19
【问题描述】:

我从 Cloud9 的 AWS 资源菜单中创建了 2 个 Lambda 函数。

我想要这些功能的通用模块。

我为常用模块创建了新文件夹,并将路径~/environment/python/lib 添加到 PYTHONPATH 的 Preferences -> Python Support。

我用Lambda(local)做了Run主函数。

但我得到了Unable to import module 'main/lambda_function': No module named 'common'

我可以在 Cloud9 中为 Lambda 函数设置 PYTHONPATH 吗?

或者有没有更好的做法让多个 Lambda 函数使用通用模块?

我的文件夹树:

root
|-python
  |-lib     <- for uploading to Lambda Layers
    common.py
|-app
  |-main
    |-lambda_function.py
  |-main2
    |-lambda_function.py

我的 lambda_function.py:

import common

【问题讨论】:

标签: python amazon-web-services aws-lambda aws-cloud9


【解决方案1】:

在您执行任何其他操作之前,只需在您的 python 文件中输出PYTHONPATH

import os
print(os.environ['PYTHONPATH'])

import ...

def lambda_handler(event,context):
  ...

作为函数日志的一部分,您将看到它将环境变量输出为/var/runtime。即使您通过 Cloud9 设置设置了该路径,您也会像我一样发现这些设置不成立。

我希望在~/environment/layers/layername 下设置我的所有层,因此我将在~/environment/layers/scikit-learn/python/... 下拥有例如scikit-learn 的所有库和依赖项,并且我将使用相同的 scikit-learn 目录来实际创建我的层用于远程部署。

但这没有用。

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 2015-11-19
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多