Py学习  »  Python

python时区只使用aws lambda中提供的模块?

Alex R • 5 年前 • 1718 次点击  

我试着运行这个代码 this answer 是的。

from datetime import datetime
from pytz import timezone
import pytz

def lambda_handler(event, context):

    date_format='%m/%d/%Y %H:%M:%S %Z'
    date = datetime.now(tz=pytz.utc)
    print('Current date & time is:', date.strftime(date_format))

    date = date.astimezone(timezone('US/Pacific'))

    print('Local date & time is  :', date.strftime(date_format))

我在用aws lambda。我得到这个错误:

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

如何解决这个问题,只使用aws lambda中可用的导入?我想保持代码非常简洁,这样就可以直接复制粘贴到aws控制台中,而不必添加关于如何设置包等的说明。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48199
 
1718 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Kevin Christopher Henry
Reply   •   1 楼
Kevin Christopher Henry    6 年前

没有简单的方法。

默认lambda python运行时中没有一个库知道特定(非平凡)时区的规则。这个 datetime 模块定义了处理时区转换的api,但它将时区本身的混乱细节留给第三方库,如pytz。

当然,你可以自己指定那些时区规则。这个 tzinfo documentation 提供一些示例代码,用于“美国主要时区当前DST规则的完整实现”。但那会有很多开销,我想这不是你想要的。