【问题标题】:no module name pyodbc in aws lambdaaws lambda中没有模块名称pyodbc
【发布时间】:2021-08-04 13:52:15
【问题描述】:

试图将我的 mssql 与 aws lambda 连接,但不知道如何在那里安装这些库

import json
import urllib.parse
import boto3
import pyodbc


def lambda_handler(event,context):
    s3=boto3.client('s3')
    if event:
        connection = 'DRIVER={SQL Server};SERVER=adasdst-2.rds.amazonaws.com,1433\SQLEXPRESS;' 'DATABASE=asd;''UID=asd;PWD=asd'
        conn = pyodbc.connect(connection)
        cursor = conn.cursor()
        print(conn)

错误

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'pyodbc'
Traceback (most recent call last):

我们将不胜感激任何帮助

【问题讨论】:

    标签: python amazon-web-services amazon-s3 lambda aws-lambda


    【解决方案1】:

    打开一个终端并创建一个 source_code 目录。

    mkdir my_lambda_source

    cd my_lambda_source

    将你的代码内容复制到lambda_function.py

    import json 
    import urllib.parse
    import boto3
    import pyodbc
    
    
    def lambda_handler(event,context):
        s3=boto3.client('s3')
        if event:
            connection = 'DRIVER={SQL Server};SERVER=adasdst-2.rds.amazonaws.com,1433\SQLEXPRESS;' 'DATABASE=asd;''UID=asd;PWD=asd'
            conn = pyodbc.connect(connection)
            cursor = conn.cursor()
            print(conn)
    

    将所需的库安装到新的package 目录。

    pip3 install --target ./package boto3

    pip3 install --target ./package pyodbc

    如果您在安装pyodbc 时遇到以下错误,那么您需要一个驱动程序管理器。对于 Ubuntu 在 RedHat 上运行 sudo apt-get install unixodbc-dev,它将是 sudo yum install unixODBC-devel

    In file included from src/buffer.cpp:12:
    src/pyodbc.h:56:10: fatal error: sql.h: No such file or directory
       56 | #include <sql.h>
          |          ^~~~~~~
    compilation terminated.
    

    转到package 目录将你的库压缩到

    zip -r ../my-deployment-package.zip .
    

    这会在你的项目目录my_lambda_source中生成一个my-deployment-package.zip文件

    lambda_function.py 文件添加到 zip 文件的根目录。

    cd ..
    zip -g my-deployment-package.zip lambda_function.py
    

    现在将my-deployment-package.zip 文件上传到 lambda 并测试您的代码。它应该可以正常工作。 ?

    参考。 Creating a Lambda function with runtime dependencies.

    【讨论】:

    • 感谢 deepak 放弃了使用 lambda 的想法,但可能对其他人有所帮助
    【解决方案2】:

    在您的模块旁边安装 pyodbc 包,以便您的脚本能够找到依赖项python -m pip install --target ./ pyodbc。这是 AWS 文档:https://docs.aws.amazon.com/lambda/latest/dg/python-package-create.html 请参阅“创建具有运行时依赖项的函数”部分。

    【讨论】:

    • 我真的不知道该 zip 方法是如何工作的,但我在教程 lemme add image where my directory 的样子的帮助下尝试了它
    • 我已添加图片,请检查
    • 在教程中,他们将依赖项安装到名为./package 的子文件夹中,然后将其压缩,然后将lambda_function.py 添加到其中。你所拥有的是不同的,但仍然可以工作。您只需按原样压缩您的项目。我会去你项目的父目录(即不是你项目的根目录,而是上面那个)然后压缩它。
    • 它显示了我在图像中所做的相同错误
    • 我应该从站点包中压缩它吗???这是我以前的目录,其中包含所有这些文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多