pip install – locale.Error: configuración regional no admitida

6 minutos de lectura

avatar de usuario
eric

Seguimiento completo 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.

➜  ~ pip --version
pip 8.1.1 from /usr/lib/python3.4/site-packages (python 3.4)

pip uninstall virtualenv arroja el mismo error también

  • ¿Ya leíste esto?

    – idjaw

    4 de abril de 2016 a las 3:26

  • sí, tengo @idjaw, nodo que es una cadena vacía en mi caso, es diferente de la configuración regional incorrecta que señaló

    -Ericn

    4 de abril de 2016 a las 3:28

  • Sí, me di cuenta de eso. ¿Probaste el pkg-reconfigure?

    – idjaw

    4 de abril de 2016 a las 3:29

  • mi servidor es centos, no Ubuntu @idjaw, lo revisé y parece que no hay nada malo con el local. LANG=en_GB.utf8

    -Ericn

    4 de abril de 2016 a las 3:35

avatar de usuario
roy

La causa raíz es: su variable de entorno LC_ALL falta o no es válido de alguna manera

Respuesta corta-

simplemente ejecute el siguiente comando:

$ export LC_ALL=C

Si sigue recibiendo el error en las nuevas ventanas de terminal, agréguelo en la parte inferior de su .bashrc expediente.

Respuesta larga-

Aquí está mi locale ajustes:

$ 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

  • entonces, ¿es solo una cuestión de configurar una variable de entorno? ¿Sabes por qué nunca me había encontrado con esto antes? ¿No debería establecerse este valor automáticamente?

    -Ericn

    4 de abril de 2016 a las 3:54

  • @eric Hola, acabo de actualizar mi publicación. Este problema ocurre con python2.7 en mi computadora.

    – ROY

    4 de abril de 2016 a las 4:14

  • muy interesante de hecho @ROY, he configurado otros 2 servidores casi idénticos a este servidor y han estado funcionando perfectamente bien

    -Ericn

    4 de abril de 2016 a las 4:32

  • Si te preguntas qué LC_ALL=C significa, ver aquí.

    – Garrett

    19 de octubre de 2016 a las 7:18

  • La respuesta corta “LC_ALL=C” es más que suficiente. Gracias.

    – mgokhanbakal

    6 de septiembre de 2020 a las 6:52

avatar de usuario
Rahi.Shah

Ejecute el siguiente comando (funcionará):

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

  • (-1) El dpkg-reconfigure El comando está diseñado para usarse en sistemas basados ​​en Debian. Esta pregunta está etiquetada con centosun derivado de RHEL que no proporciona soporte para dpkg a menos que habilite el epel-release repositorio e instale el dpkg-devel & dpkg-dev paquetes Incluso entonces, esta no es una solución ideal.

    usuario5739133

    4 de abril de 2020 a las 1:46


avatar de usuario
Iván Semochkin

Alguien puede encontrarlo útil. Puede colocar 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 escribe source .bashrc

Ahora no necesita llamar a este comando manualmente cada vez, cuando se conecta a través de ssh, por ejemplo.

avatar de usuario
Marco Lavagnino

Si bien puede configurar la configuración regional exportando una variable env, tendrá que hacerlo cada vez que inicie una sesión. Establecer una configuración regional de esta manera resolverá el problema de forma permanente:

sudo apt-get install locales
sudo locale-gen en_US.UTF-8
sudo echo "LANG=en_US.UTF-8" > /etc/default/locale

avatar de usuario
林果皞

[This answer is target on linux platform only]

Lo primero que debe saber es que la mayor parte de la ruta ubicada en el 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 ultimo /usr/share/i18n ? Aquí es donde se encuentra su 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 archivos binarios. Uno de los caminos, por ejemplo, supongamos que tengo /usr/share/i18n/locales/en_LOVEpuedo agregarlo a la lista de compilación, es decir /etc/locale-gen expediente:

$ tail -1 /etc/locale.gen 
en_LOVE.UTF-8 UTF-8

Y compilarlo a 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 la deseada LANG, LC_ALL …etc con esto update-locale:

sudo update-locale LANG=en_LOVE.UTF-8

update-locale en realidad también significa actualizar esto /etc/default/locale archivo que se generará por 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 enviarlo a la variable de entorno en la sesión de shell actual:

$ . /etc/default/locale

Qué tal si sudo dpkg-reconfigure locales ? Si juega con él, sabrá 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 que /etc/locale.gen contiene ese candidato de configuración regional y locale.gen obtener compilado, setlocale(category, locale) debería funcionar sin tiros locale.Error: unsupoorted locale setting. Puedes comprobar la cadena correcta en_US.UTF-8/en_US/....etc ser puesto en setlocale()al observar /etc/locale.gen y luego descoméntelo y compílelo como desee. zh_CN GB2312 sin punto en ese archivo significa que la cadena correcta es zh_CN y zh_CN.GB2312.

  • Para mi situación, la respuesta corta es: 1. editar /etc/locale.gendescomentar el zh_CN.UTF-8 línea; 2. sudo locale-gen.

    – Cebolla de nieve

    7 de marzo de 2019 a las 5:48


avatar de usuario
ben

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?

docker ubuntu /bin/sh: 1: locale-gen: no encontrado

  • Para mi situación, la respuesta corta es: 1. editar /etc/locale.gendescomentar el zh_CN.UTF-8 línea; 2. sudo locale-gen.

    – Cebolla de nieve

    7 de marzo de 2019 a las 5:48


Tuve el mismo problema, y "export LC_ALL=c" no funcionó para mí.

Probar export LC_ALL="en_US.UTF-8" (funcionará).

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad