Le module ne peut pas être importé en Python sur EC2 exécuté à partir d'AWS Lambda

Postscript: 19/06/2017

résolu. http://qiita.com/tf_qiita/items/60d6d21ffb23656949d2

Original

Lorsque le fichier vidéo a été placé dans S3, j'ai lancé Python sur EC2 avec Lambda et Je faisais un programme qui démarre ffmpeg via ffmpy et traite des vidéos. Je ne peux pas importer ffmpy normalement, donc je l'écrirai dans le partage d'informations lorsqu'il sera résolu.

environnement

Le code d'exécution se trouve sous le répertoire personnel d'ec2-user comme indiqué ci-dessous.

/home/ec2-user/hoge/
├── MAIN1_KICKED_BY_LAMBDA.py #Méthode principale
├── fuga
│   └── hogefuga.py           #Module d'édition vidéo
...

Les paramètres suivants ont été définis pour l'utilisateur root.

ffmpegcpl.sh


#!/bin/sh

sudo yum -y install autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel

mkdir ~/ffmpeg_sources

#Yasm
cd ~/ffmpeg_sources
git clone --depth 1 git://github.com/yasm/yasm.git
cd yasm
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean

#libx264
cd ~/ffmpeg_sources
git clone --depth 1 git://git.videolan.org/x264
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean

#libx265
cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install

#libfdk_aac
cd ~/ffmpeg_sources
git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

#libmp3lame
cd ~/ffmpeg_sources
curl -L -O http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install
make distclean

#libopus
cd ~/ffmpeg_sources
git clone http://git.opus-codec.org/opus.git
cd opus
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

#libogg
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
tar xzvf libogg-1.3.2.tar.gz
cd libogg-1.3.2
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

#libvorbis
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz
tar xzvf libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
LDFLAGS="-L$HOME/ffmeg_build/lib" CPPFLAGS="-I$HOME/ffmpeg_build/include" ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

#libvpx
cd ~/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples
make
make install
make clean

#FFmpeg
cd ~/ffmpeg_sources
git clone http://source.ffmpeg.org/git/ffmpeg.git
cd ffmpeg
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
make
make install
make distclean
hash -r

Statut actuel / essai

Veuillez vous abstenir de publier le code à exécuter. .. .. Le journal lorsqu'il est exécuté à partir de Lambda est le suivant, et il semble qu'il soit supprimé en regardant pyenv (inexistant) de ec2-user.

Traceback (most recent call last):
  File "/home/ec2-user/hoge/MAIN1_KICKED_BY_LAMBDA.py", line 88, in <module>
    hogefuga.exeExtractWav(TMP_DIRECTORY2 + '/', nameonly)
  File "/home/ec2-user/hoge/fuga/hogefuga.py", line 175, in exeExtractWav
    extractWav(filename)
  File "/home/ec2-user/hoge/fuga/hogefuga.py", line 162, in extractWav
    ff.run()
  File "/home/ec2-user/.pyenv/versions/anaconda3-4.3.1/lib/python3.6/site-packages/ffmpy.py", line 99, in run
    raise FFExecutableNotFoundError("Executable '{0}' not found".format(self.executable))
ffmpy.FFExecutableNotFoundError: Executable 'ffmpeg' not found

Lorsque je me connecte avec SSH et que je l'exécute directement en tant que root, je vais voir pyenv du côté racine et il s'exécute sans problème. Y a-t-il les deux solutions suivantes?

--Construisez également les environnements pyenv et ffmpeg dans l'environnement ec2-user.

En premier lieu, il ne sera actualisé que si la cause du changement de chemin entre l'exécution directe et l'exécution Lambda est clarifiée.

(23/05/2017 17:12 postscript)

--Construisez également les environnements pyenv et ffmpeg dans l'environnement ec2-user.

J'ai essayé les deux, mais je me suis retrouvé avec l'erreur suivante.

----------ERROR-------
failed to run commands: exit status 1
Traceback (most recent call last):
  File "MAIN1_KICKED_BY_LAMBDA.py", line 17, in <module>
    import formatchg
  File "/root/fuga/hoge/fugahoge.py", line 10, in <module>
    from ffmpy import FFmpeg
ImportError: No module named ffmpy

Recommended Posts

Le module ne peut pas être importé en Python sur EC2 exécuté à partir d'AWS Lambda
Exécutez Python selon la planification sur AWS Lambda
[Python] Permet d'importer les packages pip3 sur AWS Lambda
[Python] Exécutez Headless Chrome sur AWS Lambda
Précautions lors de l'exécution de Python sur EC2 à partir d'AWS Lambda (Exécuter la commande)
Exécutez régulièrement des programmes Python sur AWS Lambda
Operators ++, - ne peut pas être utilisé en python (différence de php)
[Python] Scraping dans AWS Lambda
Ecrire une fonction AWS Lambda en Python
xgboost (python) sur l'environnement d'instance EC2 Spot préparé par AWS Lambda
Bonnes pratiques pour la journalisation au format JSON sur AWS Lambda / Python
Exécutez AzureKinect en Python la veille de Noël.
Le module Python avec "- (trait d'union)" ne peut pas être supprimé
Tkinter n'a pas pu être importé en Python
Exécutez Python en C ++ sur Visual Studio 2017
Remarques sur l'accès à dashDB à partir de python
Tweet d'AWS Lambda
Précautions lors de l'exécution de Python sur EC2 à partir d'AWS Lambda (Exécuter la commande)
Remarques sur l'utilisation de MeCab depuis Python
Exécutez Python selon la planification sur AWS Lambda
Python appelant l'API Google Cloud Vision depuis LINE BOT via AWS Lambda
Le module ne peut pas être importé en Python sur EC2 exécuté à partir d'AWS Lambda
[Python] Exécutez Headless Chrome sur AWS Lambda
Exécutez Python YOLOv3 en C ++ sur Visual Studio 2017
Développement Python sur Ubuntu sur AWS EC2 (à l'aide de Jupyter Lab)
Créez des paramètres dans terraform pour envoyer des messages depuis AWS Lambda Python3.8 vers Slack
TensorFlow: exécuter des données apprises en Python sur Android
Impossible d'importer matplotlib etc. dans l'environnement VirtualEnv
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
[Mémorandum] Les clés japonaises ne peuvent pas être utilisées dans la chaîne de python.
Vérifiez types_map lors de l'utilisation de mimetypes avec AWS Lambda (Python)
Déployer la fonction Python 3 avec Serverless Framework sur AWS Lambda
compréhension de liste car operator.methodcaller ne peut pas être utilisé avec python 2.5
Prise en charge de l'environnement d'exécution Python 2.7 sur AWS Lambda (à partir de 2020.1)
Exécutez CGI écrit en python sur le serveur de location de Sakura
Je veux AWS Lambda avec Python sur Mac!
Exécutez la version GPU tensorflow sur une instance ponctuelle d'AWS EC2
[Python] Retry processing (Exponential Backoff) mémo dans AWS Lambda
[Redash] La bibliothèque standard ne peut pas être utilisée dans la fonction python
Exécutez Python à partir d'Excel
Exécutez mysqlclient sur Lambda
Tweet d'AWS Lambda
Exécutez BigQuery à partir de Lambda
Tensorflow ne peut pas être importé
Publié en tant que pièce jointe à Slack sur AWS Lambda (Python)
Exécutez AWS IoT Device SDK for Python sur Raspberry Pi
La vidéo ne peut pas être chargée avec Spyder dans l'environnement de développement Python
Publiez régulièrement des images de Papillon sur Python + AWS Lambda + Slack
Création d'un environnement pour exécuter des programmes Python sur AWS EC2
Je veux pouvoir exécuter Python avec VS Code
Si vous rencontrez des problèmes avec les délais d'expiration lors de la mise en œuvre de SlashCommand de Slack dans Python d'AWS Lambda
Exécutez Openpose sur Python (Windows)
Exécuter des tâches automatisées en Python
Exécuter des commandes shell en Python
Exécuter Python unittest en parallèle
OCR à partir de PDF en Python
Exécutez le script illustrator à partir de python
Interroger Athena depuis Lambda Python
Exécutez Tensorflow 2.x sur Python 3.7
Exécutez le CGI de Python sur CORESERVER
Exécutez la commande unix sur python
Python --Installez MySQLDB sur EC2
Exécutez YOLO v3 sur AWS v2
Exécutez YOLO v3 sur AWS
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Si vous êtes bloqué dans Impossible de charger mkl_intel_thread.dll en Python sous Windows