【问题标题】:User data in EC2 is not able to run my py scriptEC2 中的用户数据无法运行我的 py 脚本
【发布时间】:2021-06-16 19:11:34
【问题描述】:

我有一个 python 脚本,用于将视频分割成帧。这个 python 脚本由一个 shell 脚本执行。我已将此 shell 脚本的执行命令放入我的 EC2 实例的用户数据中。但是,当我启动我的实例时,shell 脚本正在运行,但 python 脚本没有运行。 检查我的 cloud-init-output.log 文件时出现以下错误

Traceback (most recent call last):
  File "frame_splitter.py", line 4, in <module>
    import cv2
ModuleNotFoundError: No module named 'cv2'
Cloud-init v. 20.4.1-0ubuntu1~18.04.1 running 'modules:final' at Fri, 19 Mar 2021 11:09:20 +0000. Up 17.64 seconds.

当我从实例本地运行 shell 脚本或 py 脚本时,它运行良好。为什么即使已经安装也找不到任何库?

编辑

这是用户数据脚本

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/sh
cd /home/ubuntu
sh ./panorama.sh

【问题讨论】:

  • 你能显示用户数据脚本吗?
  • @Marcin 我已经编辑并添加了脚本
  • 所有的python库都安装在你本地的.pip文件夹中了吗?用户数据在启动后很早就以 root 身份运行。无法初始化库的路径。
  • 你能像这样安装你的包吗:- pip install --target ./package cv2 它将在当前文件夹中安装包/依赖项。因此,在运行之前,您需要执行“cd”并转到代码所在的位置。然后运行命令。
  • 不确定你是否已经这样做了。首先,您在本地尝试此命令的工作原理以及它将做什么。然后它会是你的电话,把它放在哪里。但请尝试两者都做。首先,转到您的目录并运行代码所在的命令,然后通过用户数据 [ec2] 自动执行此步骤。

标签: python amazon-web-services amazon-s3 amazon-ec2 aws-lambda


【解决方案1】:

您需要在#!/bin/sh 之后在您的用户脚本中添加这两个步骤

sudo apt update
sudo apt install python3-opencv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2021-06-09
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    相关资源
    最近更新 更多