2017-06-18 73 views
2

尝试在AWS Lambda上运行魔杖以进行一些简单的图像处理。AWS上的Python魔杖和ImageMagick Lambda

到目前为止,我:

  1. 创建实例,这是相同的拉姆达环境
  2. 从源代码安装ImageMagick的

    wget ImageMagick 
    cd ImageMagick-... 
    ./configure --prefix=/home/ec2-user/im --without-x 
    make && make install 
    
  3. 集MAGICK_HOME到/home/ec2-user/im/

  4. pip install wand

但是当我尝试导入wand.image我得到:

import wand.image 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/ec2-user/cv/local/lib64/python2.7/site-packages/wand/image.py", line 20, in <module> 
    from .api import MagickPixelPacket, libc, libmagick, library 
    File "/home/ec2-user/cv/local/lib64/python2.7/site-packages/wand/api.py", line 206, in <module> 
    'Try to install:\n ' + msg) 
ImportError: MagickWand shared library not found. 
You probably had not installed ImageMagick library. 
Try to install: 
    http://docs.wand-py.org/en/latest/guide/install.html 

它当我做了yum install ImageMagick工作正常,但因为我想将其捆绑我想我需要包括二进制文件并将魔杖安装指向它。

有什么想法?

+1

是你能得到任何解决这个?看起来我会沿着相同的路径... – RHH

+0

是的,算出来,以及像opencv,keras等一些其他库。 – daxiangCODE

回答

0

因为别人现在有兴趣,我解决了这个问题,目前管理我的lambda项目类似于下面。

文件夹结构

-project 
    -init_libs.py 
    -lambda_function.py 
    -libs 
    -libMagickWand-6.Q16.so 
    -libMagickCore-6.Q16.so 
    -libMagick++-6.Q16.so 
    -site-packages 
    -wand 
    -other_modules 

init_libs.py加载本地库一样棒。

import sys 
import os 
from ctypes import cdll 
from os.path import join 

# manually load libraries and set paths so native libraries can be used. 
exec_dir = os.getcwd() 
sys.path.append(join(exec_dir, 'site-packages')) 

# required for Wand 
os.environ['MAGICK_HOME'] = exec_dir 

lib_dir = join(exec_dir, 'lib') 

# add lib to sys path for general loading 
sys.path.append(lib_dir) 

lambda_function.py现在可以导入棒

from wand.image import Image 

print Image 
+0

嘿@daxiangCODE,只是一个简单的问题,你在哪里找到共享这个修补程序的目标文件...我似乎无法找到他们 –

+0

拍摄,这是前一段时间在一个较旧的项目:(这取决于你如何安装imagemagick。看你的包管理器放置文件的位置,或尝试找。 – daxiangCODE