【发布时间】: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