繁体   English   中英

无法导入模块“lambda_function”:没有名为“cx_Oracle”的模块

[英]Unable to import module 'lambda_function': No module named 'cx_Oracle'

我正在尝试在 Python 中创建一个 AWS Lambda 函数来连接到 Oracle 数据库(目前,只是一个测试连接)。 但是我没有成功完成流程。 每次我看到这个错误信息:

{
      "errorMessage": "Unable to import module 'lambda_function': No module named 'cx_Oracle'",
      "errorType": "Runtime.ImportModuleError"
    }

我在 Ubuntu WSL 上创建了一个 virtualenv,在 lib 文件夹上安装 Oracle InstantClient,通过 pip 在 sites-package 文件夹安装 cx_oracle,并在同一个文件夹中创建我的 lambda 函数,压缩所有内容,上传到我的 S3 并运行.

谁能帮我?

我的代码:

    import cx_Oracle

    # Yeah, you need this
    with open('/tmp/HOSTALIASES', 'w') as f: f.write(f'{os.uname()[1]} localhost\n')

    # Oracle away!
    def lambda_handler(event, context):
        return str(
            cx_Oracle.connect(
                'username',
                'password',
                cx_Oracle.makedsn(
                    'rds.amazonaws.com', 1521, 'SOME_SID',
                )
            ).cursor().execute('SELECT 42 FROM DUAL').fetchone()
        )

我的网站包文件夹:文件夹

** 我的 lambda 配置:**拉姆达

AWS Lambda 与 Amazon Linux 一起运行,因此您需要 cx_Oracle 的兼容库,在本例中为manylinux.whl

只需下载 whl,解压缩,然后将 .so 文件复制到您的lib文件夹中。

这样 Lambda 就会识别 cx_Oracle。

文件夹结构应如下所示:结构

对于 lambda 中的 python3.7 附加路径,请使用 PYTHONPATH 环境变量,并将您的库保存在此文件夹中。

在此处输入图片说明

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM