【问题标题】:Locale.Error with building python based docker构建基于 python 的 docker 时出现 Locale.Error
【发布时间】:2016-07-16 13:53:55
【问题描述】:

我是 docker 新手,如果有人可以帮助我在构建 docker 映像时消除此错误,我将不胜感激。它给出了某种语言环境错误。我怎样才能摆脱这个错误?

Collecting pip
Downloading pip-8.1.1-py2.py3-none-any.whl (1.2MB)
Collecting setuptools
Downloading setuptools-20.3.1-py2.py3-none-any.whl (508kB)
Collecting wheel
Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-8.1.1 setuptools-20.3.1 wheel-0.29.0
+ pip install --no-cache-dir --upgrade pip==8.0.2
Traceback (most recent call last):
File "/usr/bin/pip", line 11, in 
sys.exit(main())
File "/usr/lib/python2.7/site-packages/pip/__init__.py", line 215, in main
locale.setlocale(locale.LC_ALL, '')
File "/usr/lib64/python2.7/locale.py", line 547, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
The command '/bin/sh -c set -ex && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" && curl -fSL 'https://bootstrap.pypa.io/get-pip.py' | python2 && pip install --no-cache-dir --upgrade pip==$PYTHON_PIP_VERSION' returned a non-zero code: 1

这是我的 Dockerfile:

FROM mybase:1.0.7

RUN set -x \
&& yum install -y python-devel libffi-devel python-cffi \
&& yum clean all

ENV LANG C.UTF-8

ENV GPG_KEY C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF

ENV PYTHON_VERSION 2.7.11

ENV PYTHON_PIP_VERSION 8.0.2

RUN set -ex \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \
&& curl -fSL 'https://bootstrap.pypa.io/get-pip.py' | python2 \
&& pip install --no-cache-dir --upgrade pip==$PYTHON_PIP_VERSION

RUN pip install --no-cache-dir virtualenv

CMD ["python2"]

【问题讨论】:

    标签: python docker locale


    【解决方案1】:

    locale.setlocale 文档说locale 应该是有效的。如果传递了一个空字符串,则LANG 变量用于设置语言环境。此错误可能是因为您的 LANG 不是受支持的语言环境

    在您的 docker 脚本中,您将 LANG 设置为 C.UTF-8。看起来 C.UTF-8 在 glibc 中不是受支持的语言环境,因此我猜测在 Python 中(参见 thisthis)。

    您可以将LANG 设置为受支持的类型,例如en_US.UTF-8(我的计算机上的默认值)。

    在 Python-2.6 上,我得到以下结果

    Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import locale
    >>> locale.setlocale(locale.LC_ALL, "")
    'en_US.utf8'
    >>> locale.setlocale(locale.LC_ALL, "C.UTF-8")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib64/python2.6/locale.py", line 513, in setlocale
        return _setlocale(category, locale)
    locale.Error: unsupported locale setting
    >>> locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
    'en_US.UTF-8'
    >>> locale.setlocale(locale.LC_ALL, "de_DE.UTF-8")
    'de_DE.UTF-8'
    

    您可以通过运行查看计算机上可用的语言环境

    $ locale -a
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多