我在Windows 10中创建了lambda_function.py文件。我在Windows中使用Python版本:3.10.11。 当我在 Windows 10 中运行脚本时,它可以正常工作,但是当运行 AWS Lambda 时,我在以下行收到错误:
import pandas as pd
Windows 10 日志
(io_script) E:\env\abc\io_script\Scripts>python --version
Python 3.10.11
AWS Lambda 日志:AWS Lambda python 版本是 3.10
[ERROR] AttributeError: module 'os' has no attribute 'add_dll_directory'
Traceback (most recent call last):
File "/var/lang/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/var/task/lambda_function.py", line 4, in <module>
import pandas as pd
File "/var/task/pandas/__init__.py", line 12, in <module>
_delvewheel_patch_1_5_4()
File "/var/task/pandas/__init__.py", line 9, in _delvewheel_patch_1_5_4
os.add_dll_directory(libs_dir)INIT_REPORT Init Duration: 433.15 ms Phase: init Status: error Error Type: Runtime.Unknown
INIT_REPORT Init Duration: 3141.57 ms Phase: invoke Status: timeout
START RequestId: f19a6b90-0b68-4824-b13c-2f64a1c98969 Version: $LATEST
2024-07-02T16:53:26.432Z f19a6b90-0b68-4824-b13c-2f64a1c98969 Task timed out after 3.20 seconds
lambda_function.py
import requests
import json
import math
import pandas as pd
from pandas import json_normalize #New
import datetime
from datetime import date
from pytz import timezone
from datetime import timedelta
from datetime import datetime
import numpy as np
from sqlalchemy import create_engine
import pymysql
def lambda_handler(event, context):
print('hi')
AWS Lambda 在 Amazon Linux(源自 RedHat)上运行。 您将无法在 Lambda 运行时中使用特定于 Windows 的功能。
add_dll_directory
仅适用于 Windows,不存在于 Linux 的 python 发行版上。
使用WSL之类的工具在 Lambda 运行时之外开发和测试您的代码。