我正在尝试使用 python 从 AWS Lambda
连接到 Oracle 数据库。我成功打包了cx_Oracle,但是环境没有找到依赖项。
我已经压缩了内容,其中包含 cx_Oracle.so
和 cx_Oracle-5.2.1-py2.7.egg-info
(在 64 位 AWX Linux 上创建)。我还将 instantclient-basic-linux.x64-12.1.0.2.0.zip
中的文件添加到该 zip 文件中的 local/lib 中。
我得到的错误是
import cx_Oracle
ImportError: libaio.so.1: cannot open shared object file: No such file or directory
我像这样动态更改 python 中的环境变量:
oracledir = os.path.join(os.getcwd(), 'local', 'lib')
libdir = os.environ['LD_LIBRARY_PATH'] + ":" + os.path.join(os.getcwd(), 'local', 'lib')
command = 'LD_LIBRARY_PATH={} ORACLE_HOME={} python OracleWorker.py "{}"'.format(libdir, oracledir, args)
subprocess.call(command, shell=True)
OracleWorker.py 以import cx_Oracle
开头
最佳答案
已解决。通过运行添加所有依赖项
ldd cx_Oracle.so| grep“=>/”| awk '{print $3}' | xargs -I '{}' cp -v '{}'/目的地
将目标中的所有文件添加到 lambda zip 中的 lib 文件夹
关于python - AWS Python Lambda 与 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734748/