python - 如何在 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
哪里寻找依赖项?
解决方案
我通过在 env 中添加 "PYTHONPATH" = "/var/task" 解决了这个问题。
os.environ["PYTHONPATH"] = "/var/task"
process = subprocess.run("/tmp/my_script.py", env = os.environ, stdout=None, stderr=subprocess.STDOUT)
推荐阅读
- codeigniter-3 - CodeIgniter MySQL 选择和查询
- excel - 删除单个工作簿中每个工作表的错误行
- java - 如果服务器未读取,则跳过 Java 客户端套接字写入
- json - System.Collections.Generic.List`1[System.String]" JSON 错误
- ios - UIAppearance 不适用于可重用的集合视图单元格
- asp.net-core - 我如何将asp.net mvc核心应用程序托管到linux服务器应用程序是在window平台上开发的
- reactjs - 在反应路由器中更改路径而不导致重新渲染?
- java - maven 依赖项升级/更改后 shiro.ini 配置失败
- azure - Key Vault 参考限制
- html - 将 CSS Grid 与位置/变换一起使用