基于 python 的 Dockerfile 抛出 locale.Error: 不支持的区域设置

2024-02-08

我在将主机 (Centos7) 区域设置传递给 python3 docker 映像时遇到问题。尽管我使用了下面链接中描述的建议,但图像中仅出现以下区域设置:

C
C.UTF-8
POSIX

为什么 locale.getpreferredencoding() 返回“ANSI_X3.4-1968”而不是“UTF-8”? https://stackoverflow.com/questions/44344458/why-does-locale-getpreferredencoding-return-ansi-x3-4-1968-instead-of-utf-8/59632904#59632904

我的 Dockerfile 有:

FROM python:3.7.5
ENV LC_ALL C.UTF-8
WORKDIR /data
ADD ./requirements.txt /data/requirements.txt
RUN pip install -r requirements.txt
COPY . /data
CMD [ "python3", "./test.py" ]

当我运行这个命令时:

locale.setlocale(locale.LC_ALL,'ru_RU')

它抛出这个错误:

Traceback (most recent call last):
      File "./test.py", line 10, in <module>
        locale.setlocale(locale.LC_ALL,'ru_RU')
      File "/usr/local/lib/python3.7/locale.py", line 608, in setlocale
        return _setlocale(category, locale)
    locale.Error: unsupported locale setting

如果我设置

ENV LANG ru_RU.UTF-8
ENV LC_ALL ru_RU.UTF-8

然后我得到:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
locale.getdefaultlocale ('ru_RU', 'UTF-8')
locale.getpreferredencoding UTF-8
Exception: unsupported locale setting

请解释一下如何将 ru_RU 语言环境添加到 python 图像中?


我会为基于 Debian 的 docker 镜像做些什么:

FROM python:3.7.5

RUN apt-get update && \
    apt-get install -y locales && \
    sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \
    dpkg-reconfigure --frontend=noninteractive locales

ENV LANG ru_RU.UTF-8
ENV LC_ALL ru_RU.UTF-8

然后在Python中:

import locale

locale.setlocale(locale.LC_ALL,'ru_RU.UTF-8')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 python 的 Dockerfile 抛出 locale.Error: 不支持的区域设置 的相关文章

随机推荐