【问题标题】:How to set locale in AWS AMI Linux Lambda?如何在 AWS AMI Linux Lambda 中设置语言环境?
【发布时间】:2019-03-31 06:06:03
【问题描述】:

我在 python 中有一个小脚本,它利用语言环境来格式化从 1.000,00 到 1,000.00 的数字

import re, locale
locale.setlocale(locale.LC_ALL, 'es_PE.UTF-8')

locale.atof(number)

然后当我在 Lambda 中运行它时,我收到以下错误消息:

不支持的区域设置

我知道如何通过在终端中执行以下命令在我的 PC 中安装依赖项:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

来源:https://stackoverflow.com/a/36257050/2513972

【问题讨论】:

  • AMI(EC2 功能)与 AWS Lambda 有什么关系?
  • Lambdas 确实有一个 AMI docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html 但您正确地指出 Lambda 更像是一种托管服务,而不是真正为您定制或安装东西而设置的。不过,它确实允许有限的自定义。

标签: python-3.x aws-lambda amazon-ami


【解决方案1】:

要确定可用语言环境的列表,请参阅https://phrase.com/blog/posts/beginners-guide-to-locale-in-python/

for lang in locale.locale_alias.values():
    print(lang)

您将无法在默认的 AWS Lambda Python 运行时环境中“安装”任何东西,并且设置自定义运行时可能比它的价值更麻烦。你可以看看有没有其他可以使用的东西。

如果您真的只是将 1.000,00 转换为 1,000.00,我建议您只运行自己的字符替换。一个简单的字符检查循环不会比atof 慢,而且副作用更少。

如果您对atof 的工作原理感到好奇,您可以在https://github.com/python/cpython/blob/3.10/Lib/locale.py#L336 中关注它的源代码跟踪

如果您不想使用自己的字符替换,您可以使用 format 和自定义 format_spec

>>> '{:,.2f}'.format(10000)
'10,000.00'

下一行与atof 的步骤基本相同。用替换物离域然后浮动。

>>> '{:,.2f}'.format(float('10.000,00'.replace('.','').replace(',','.')))
'10,000.00'

https://docs.python.org/3/library/functions.html#format https://docs.python.org/3/library/string.html#formatspec

如果您真的想自定义您的 lambda 运行时,请参阅以下内容:

https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2014-05-29
    • 2014-01-01
    • 2019-08-27
    • 2019-08-27
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多