【问题标题】:'ImportError: No module named sqlalchemy' error when trying to run ec2 python script from ssm尝试从 ssm 运行 ec2 python 脚本时出现“ImportError:没有名为 sqlalchemy 的模块”错误
【发布时间】:2021-01-10 06:29:37
【问题描述】:

我正在尝试使用来自 Lambda 的 ssm runShellScript 在我的 ec2 实例上运行 python 脚本。使用创建文本文件的简单脚本进行测试时,它可以毫无问题地运行。我可以在 ec2 上看到文本文件。但是当尝试运行预期的 python 脚本 (analyzer.py) 时,我收到以下错误:'ImportError: No module named sqlalchemy'

脚本analyzer.py 使用了sqlalchemy 模块。当我直接从 ec2 服务器运行 analyzer.py 时,脚本运行得很好。想法?

【问题讨论】:

  • 当您直接在 ec2 上手动运行脚本时,您使用哪个 python 解释器?你在使用 virtualenv 吗?
  • 没有 virtualenv... 只需 cd 进入目录并运行'python analyzer.py arg'
  • 你能分享脚本和来自 ssm 的完整错误信息吗?
  • ----------ERROR------- Traceback (most recent call last): File "analyzer.py", line 16, in <module> import sqlalchemy ImportError: No module named sqlalchemy 将无法共享脚本!

标签: python amazon-ec2 ssm


【解决方案1】:

原因是当使用 ssm runShellScript 向 ec2 实例发送命令时,您以“root”身份运行,我假设没有安装 sqlalchemy 库。您需要以“ec2-user”(或您安装了 sqlalchemy 的任何用户帐户)身份运行。

我使用了以下方法使其工作:

  1. 在 /home/ec2-user/run_analyzer.sh 中创建一个包含以下内容的文件:
cd <folder that contains analyzer.py>
python analyzer.py
  1. 使 /home/ec2-user/run_analyzer.sh 可执行(例如,使用“chmod +x /home/ec2-user/run_analyzer.sh”)
  2. 在您的 boto3 脚本中使用 ssm,如下所示:
import boto3
ssm_client = boto3.client('ssm')
ssm_client.send_command(
    InstanceIds=["<put your instance id here>"],
    DocumentName="AWS-RunShellScript",
    Parameters={'commands': [
       "sudo -i -u ec2-user /home/ec2-user/run_analyzer.sh"
    ]} )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 2017-03-09
    • 1970-01-01
    • 2019-06-26
    • 2021-05-11
    • 2013-03-09
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多