Skip to content Skip to sidebar Skip to footer

How To Use Ctypes.util.find_library To Import .so Libraries In Aws Lambda (python)?

What I'm trying A python package I'm using (OCRMYPDF) on Lambda needs the leptonica library liblept.so.5. On isolating the import code I found the issue is with find_library('lept'

Solution 1:

Tested on Python:3.7 AWS lambda environment:

You need to add liblept.so (just rename liblept.so.5) to the /lib folder of your lambda package or in /opt/lib of your layer. The file must be called liblept.so because find_library only looks for ".so" files, not ".so.5" files:

From the python doc: https://docs.python.org/3/library/ctypes.html

ctypes.util.find_library(name)
Tryto find a library andreturn a pathname. name is the library name without any prefix likelib, suffix like .so, .dylib or version number (this is the form used for the posix linker option -l). If no library can be found, returns None.

When only adding "liblept.so", the linker complains that it cannot find "liblept.so.5", so I also added "liblept.so.5" to the lib folder.

Maybe someone else can pitch in and find a solution that does not use a duplicate file.

AWS lambda will automatically make any file in /opt/lib or /lib available via LD_LIBRARY_PATH.

On Python 3.8 you may also need to include ld and objdump, as per this thread: https://forums.aws.amazon.com/thread.jspa?threadID=313506, altough I have not tested that.

Post a Comment for "How To Use Ctypes.util.find_library To Import .so Libraries In Aws Lambda (python)?"