2017-06-18 82 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