如何 运行 aws lambda /tmp 目录中的 python 脚本
How to run a python script in aws lambda /tmp directory
我已经从 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 中 运行ning 时,出现以下错误:
ModuleNotFoundError: No module named 'gevent'
我已经将 gevent
模块打包到上传到 lambda 的压缩文件中,我相信它们在 /var/task
下。我怎样才能让 /tmp
目录中的 my_script.py
知道在哪里寻找依赖项?
您可以尝试将 /var/task 插入路径,如下所示:
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../var/task')))
import gevent
假设上面的脚本在 /tmp 中,gevent 模块在 /var/task.
我通过在环境中添加 "PYTHONPATH" = "/var/task" 解决了这个问题。
os.environ["PYTHONPATH"] = "/var/task"
process = subprocess.run("/tmp/my_script.py", env = os.environ, stdout=None, stderr=subprocess.STDOUT)
我已经从 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 中 运行ning 时,出现以下错误:
ModuleNotFoundError: No module named 'gevent'
我已经将 gevent
模块打包到上传到 lambda 的压缩文件中,我相信它们在 /var/task
下。我怎样才能让 /tmp
目录中的 my_script.py
知道在哪里寻找依赖项?
您可以尝试将 /var/task 插入路径,如下所示:
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../var/task')))
import gevent
假设上面的脚本在 /tmp 中,gevent 模块在 /var/task.
我通过在环境中添加 "PYTHONPATH" = "/var/task" 解决了这个问题。
os.environ["PYTHONPATH"] = "/var/task"
process = subprocess.run("/tmp/my_script.py", env = os.environ, stdout=None, stderr=subprocess.STDOUT)