首页 > 解决方案 > 如何在 aws lambda /tmp 目录中运行 python 脚本

问题描述

我已经从 git 下载了一个脚本到/tmp目录中,我需要在 lambda 中运行该脚本。我的处理程序如下所示:

def handler(event, context):
  process = subprocess.run("/tmp/my_script.py", env = os.environ, stdout=None, stderr=subprocess.STDOUT)

但是,my_script.py有一些外部依赖项,例如gevent.

# my_script.py
import gevent
...

在 lambda 中运行时,出现以下错误:

ModuleNotFoundError: No module named 'gevent'

我已经将gevent模块打包在上传到 lambda 的压缩文件中,我相信它们在/var/task. 我如何让目录知道my_script.py/tmp哪里寻找依赖项?

标签: pythonamazon-web-servicesaws-lambdasubprocess

解决方案


我通过在 env 中添加 "PYTHONPATH" = "/var/task" 解决了这个问题。

os.environ["PYTHONPATH"] = "/var/task"
process = subprocess.run("/tmp/my_script.py", env = os.environ, stdout=None, stderr=subprocess.STDOUT)

推荐阅读