代码之家  ›  专栏  ›  技术社区  ›  user68288

为什么我的本地Python脚本会完美工作,但一旦我尝试在Lambda中运行,就会失败?

  •  0
  • user68288  · 技术社区  · 2 年前

    我基本上正试图运行HelloWorld应用程序,因为我无法解决这个问题。

    我的本地Env是Python 3.12.0。我的Lambda函数是Python 3.12.0。。

    我遵循了AWS官方文档中的两种方法来创建要加载到Lambda的zip文件。

    https://docs.aws.amazon.com/lambda/latest/dg/python-package.html

    这个脚本是100%裸露的,在我的本地电脑上运行时没有错误。

    脚本:

    import openpyxl
    import snowflake.connector
    import boto3
    import pandas as pd
    import sys
    import json
    
    def lambda_handler(event, context):
        # TODO implement
        return {
            'statusCode': 200,
            'body': json.dumps('Hello from Lambda!')
        }
    

    当我试图在Lambda中运行这个作为一个简单的测试时,我会返回以下日志:

    [ERROR] AttributeError: module 'os' has no attribute 'add_dll_directory'
    Traceback (most recent call last):
      File "/var/lang/lib/python3.12/importlib/__init__.py", line 90, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
      File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 994, in exec_module
      File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
      File "/var/task/lambda_function.py", line 1, in <module>
        import openpyxl
      File "/var/task/openpyxl/__init__.py", line 5, in <module>
        from openpyxl.compat.numbers import NUMPY
      File "/var/task/openpyxl/compat/__init__.py", line 3, in <module>
        from .numbers import NUMERIC_TYPES
      File "/var/task/openpyxl/compat/numbers.py", line 9, in <module>
        import numpy
      File "/var/task/numpy/__init__.py", line 112, in <module>
        _delvewheel_patch_1_5_2()
      File "/var/task/numpy/__init__.py", line 109, in _delvewheel_patch_1_5_2
        os.add_dll_directory(libs_dir)
    

    任何帮助都将不胜感激,因为我正为此失去理智。请注意,当我只安装boto3时,这项功能很好。我的猜测是这个问题与雪花或openpyxl有关。当然,当我推到Lambda时,确切的版本已经安装在我的电脑和虚拟环境上。

    0 回复  |  直到 2 年前