2016-03-29 5 views
0

Ich bin ein neuer Docker und würde mich freuen, wenn jemand mir helfen könnte, diesen Fehler beim Erstellen des Docker-Images loszuwerden. Es gibt eine Art von Gebietsschema-Fehler. Wie kann ich diesen Fehler beheben?Locale.Error mit dem Python-basierten Andockfenster

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 

Das ist mein 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"] 

Antwort

1

Die locale.setlocale docs sagen die locale gültig sein sollte. Wenn eine leere Zeichenfolge übergeben wird, wird die LANG-Variable zum Festlegen der Ländereinstellung verwendet. Dieser Fehler ist wahrscheinlich darauf zurückzuführen, dass Ihr LANG kein unterstütztes Gebietsschema ist.

In Ihrem Docker-Skript stellen Sie LANG auf C.UTF-8 ein. Es sieht aus wie C.UTF-8 ist kein unterstütztes Gebietsschema in glibc und ich rate daher in Python (Siehe this und this).

Sie können Ihre LANG auf einen unterstützten Typ wie (der Standard auf meinem Computer) einstellen.

auf Python-2.6, erhalte ich die folgenden Ergebnisse

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' 

Sie die Locales auf Ihrem Computer anzeigen können, von

$ locale -a 
läuft