首页 > 解决方案 > Python 脚本未在 ec2 实例中运行

问题描述

我有一个使用 ec2 实例中的用户数据运行的 shell 脚本。shell 脚本包含一个将视频分割成帧的 python 脚本。但是,即使我已将它们安装在实例中,此 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.

当我直接执行 python 脚本时,它运行完美。当我通过用户数据的 shell 脚本运行它时,它只是没有运行。

用户数据代码如下

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

我需要 3 个模块来运行代码(glob、cv2 和 os)

编辑

我在 cd/home/ubuntu 之后的用户数据中添加了 pip3 install --target ./package opencv-python 行

我在日志文件中有以下错误。

Collecting opencv-python
  Downloading https://files.pythonhosted.org/packages/bb/08/9dbc183a3ac6baa95fabf749ddb531bd26256edfff5b6c2195eca26258e9/opencv-python-4.5.1.48.tar.gz (88.3MB)
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-xzoveeew/opencv-python/setup.py", line 10, in <module>
        import skbuild
    ModuleNotFoundError: No module named 'skbuild'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-xzoveeew/opencv-python/
Traceback (most recent call last):
  File "frame_splitter.py", line 4, in <module>
    import cv2
ModuleNotFoundError: No module named 'cv2'

标签: pythonpython-3.xamazon-web-servicesamazon-s3amazon-ec2

解决方案


推荐阅读