python - wheels - pip install-locale.Error: configuración regional no compatible
whl python (9)
Traza completa de la pila:
➜ ~ pip install virtualenv
Traceback (most recent call last):
File "/usr/bin/pip", line 11, in <module>
sys.exit(main())
File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main
locale.setlocale(locale.LC_ALL, '''')
File "/usr/lib64/python3.4/locale.py", line 592, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
En el mismo servidor, ejecuté con éxito
pip install virtualenv
con python 2.7.x.
Ahora, acabo de instalar python3.4 usando
curl https://bootstrap.pypa.io/get-pip.py | python3.4
curl https://bootstrap.pypa.io/get-pip.py | python3.4
.
➜ ~ pip --version
pip 8.1.1 from /usr/lib/python3.4/site-packages (python 3.4)
pip uninstall virtualenv
arroja el mismo error
Alguien puede encontrarlo útil.
Puede poner esa configuración regional en el archivo .bashrc, que generalmente se encuentra en el directorio de inicio.
Simplemente agregue este comando en .bashrc:
export LC_ALL=C
luego escriba
source .bashrc
Ahora no necesita llamar a este comando manualmente cada vez, cuando se conecta a través de ssh, por ejemplo.
Ejecute el siguiente comando (funcionará):
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales
El mensaje de error indica un problema con la configuración regional. Para solucionar esto como lo indican otras respuestas, debe modificar su configuración regional.
En Mac OS X Sierra descubrí que la mejor manera de hacerlo era modificar el archivo
~/bash_profile
la siguiente manera:
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
Este cambio no será inmediatamente evidente en su sesión actual de cli a menos que vuelva a cargar el perfil bash usando:
source ~/.bash_profile
.
Esta respuesta está bastante cerca de las respuestas que he publicado en otras preguntas no idénticas, no duplicadas (es decir, no relacionadas con pipenv) pero que requieren la misma solución.
Al moderador: Con respeto; mi respuesta anterior se eliminó por este motivo, pero creo que fue un poco tonto porque realmente esta respuesta se aplica casi siempre que el error es "problema con la configuración regional" ... pero hay una serie de situaciones, idiomas y entornos diferentes que podrían desencadenar ese error
Por lo tanto, A) no tiene sentido marcar las preguntas como duplicadas y B) tampoco tiene sentido adaptar la respuesta porque la solución es muy simple, es la misma en cada caso y no se beneficia de la ornamentación.
La causa raíz es: su variable de entorno
LC_ALL
falta o no es válida de alguna manera
Respuesta corta-
solo ejecuta el siguiente comando:
$ export LC_ALL=C
Si sigue recibiendo el error en nuevas ventanas de terminal, agréguelo al final de su archivo
.bashrc
.
Respuesta larga-
Aquí está mi configuración
locale
:
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
Python2.7
$ uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux
$ python --version
Python 2.7.9
$ pip --version
pip 8.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
$ unset LC_ALL
$ pip install virtualenv
Traceback (most recent call last):
File "/usr/local/bin/pip", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/pip/__init__.py", line 215, in main
locale.setlocale(locale.LC_ALL, '''')
File "/usr/lib/python2.7/locale.py", line 579, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
$ export LC_ALL=C
$ pip install virtualenv
Requirement already satisfied (use --upgrade to upgrade): virtualenv in /usr/local/lib/python2.7/dist-packages
Para Dockerfile, esto funciona para mí:
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
¿Cómo instalar locale-gen?
Si bien puede configurar la configuración regional exportando una variable env, deberá hacerlo cada vez que inicie una sesión. Establecer una configuración regional de esta manera resolverá el problema permanentemente:
sudo apt-get install locales
sudo locale-gen en_US.UTF-8
sudo echo "LANG=en_US.UTF-8" > /etc/default/locale
Tengo el mismo problema y
"export LC_ALL=c"
no me funcionó
,
Intente
export LC_ALL="en_US.UTF-8"
(funcionará).
Ubuntu:
$ sudo vi /etc/default/locale
Agregue la siguiente configuración al final del archivo.
LC_ALL = en_US.UTF-8
[Esta respuesta es objetivo solo en la plataforma Linux]
Lo primero que debe saber es que la mayor parte de la ruta localizada del archivo de configuración local se puede obtener de
localedef --help
:
$ localedef --help | tail -n 5
System''s directory for character maps : /usr/share/i18n/charmaps
repertoire maps: /usr/share/i18n/repertoiremaps
locale path : /usr/lib/locale:/usr/share/i18n
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>
Ver el último
/usr/share/i18n
?
Aquí es donde se encuentra el archivo de configuración xx_XX.UTF-8:
$ ls /usr/share/i18n/locales/zh_*
/usr/share/i18n/locales/zh_CN /usr/share/i18n/locales/zh_HK /usr/share/i18n/locales/zh_SG /usr/share/i18n/locales/zh_TW
Ahora que ?
Necesitamos compilarlos en archivo binario.
Una de las formas, por ejemplo, suponga que tengo
/usr/share/i18n/locales/en_LOVE
, puedo agregarlo a la lista de compilación, es decir,
/etc/locale-gen
file:
$ tail -1 /etc/locale.gen
en_LOVE.UTF-8 UTF-8
Y compílalo en binario con
sudo locale-gen
:
$ sudo locale-gen
Generating locales (this might take a while)...
en_AG.UTF-8... done
en_AU.UTF-8... done
en_BW.UTF-8... done
...
en_LOVE.UTF-8... done
Generation complete.
Y ahora actualice la configuración regional predeterminada del sistema con
LANG
deseado,
LC_ALL
... etc. con esta
update-locale
:
sudo update-locale LANG=en_LOVE.UTF-8
update-locale
realidad también significa actualizar este
/etc/default/locale
que obtendrá el sistema al iniciar sesión para configurar las variables de entorno:
$ head /etc/default/locale
# File generated by update-locale
LANG=en_LOVE.UTF-8
LC_NUMERIC="en_US.UTF-8"
...
Pero es posible que no queramos reiniciar para que surta efecto, por lo que podemos obtenerlo en la variable de entorno en la sesión de shell actual:
$ . /etc/default/locale
¿Qué tal
sudo dpkg-reconfigure locales
?
Si juegas, sabrás que este comando básicamente actúa como GUI para simplificar los pasos anteriores, es decir, Editar
/etc/locale.gen
->
sudo locale-gen
->
sudo update-locale LANG=en_LOVE.UTF-8
Para python, siempre y cuando
/etc/locale.gen
contenga ese candidato de locale y se
locale.gen
,
setlocale(category, locale)
debería funcionar sin
locale.Error: unsupoorted locale setting
.
Puede verificar la cadena correcta
en_US.UTF-8
/
en_US/....etc
para establecerla en
setlocale()
, observando el archivo
/etc/locale.gen
, y luego descomente y
/etc/locale.gen
como desee.
zh_CN GB2312
sin punto en ese archivo significa que la cadena correcta es
zh_CN
y
zh_CN.GB2312
.