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


Full stacktrace:

➜  ~ 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 lanza el mismo error también

Author: ericn, 2016-04-04

8 answers

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

Respuesta Corta-

Simplemente ejecute el siguiente comando:

$ export LC_ALL=C

Respuesta Larga-

Aquí está mi locale configuración:

$ 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
 431
Author: ROY,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-18 12:38:31

Ejecute el siguiente comando (funcionará):

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales
 26
Author: Rahi.Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-04 11:02:10

Alguien puede encontrarlo útil. Podrías poner esa configuración regional .archivo bashrc, que normalmente se encuentra en el directorio personal.
Simplemente agregue este comando .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.

 23
Author: Ivan Semochkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-31 11:30:31

Si bien puede establecer la configuración regional para exportar 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
 2
Author: Marco Lavagnino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-28 18:14:43

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: not found

 1
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-23 07:11:30

[Esta respuesta es objetivo solo en la plataforma linux]

Lo primero que debe saber es que la mayor parte de la ruta del archivo de configuración local se puede obtener desde 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 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 qué ? Tenemos que compilarlos en un archivo binario. Una de las formas, por ejemplo, asumir que tengo /usr/share/i18n/locales/en_LOVE, puedo agregarlo a la lista de compilación, es decir, /etc/locale-gen archivo:

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

Y compilar 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 LANG, LC_ALL ...etc con esto update-locale:

sudo update-locale LANG=en_LOVE.UTF-8

update-locale en realidad también significa actualizar este archivo /etc/default/locale que será fuente por 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 simplemente derivarlo a la variable de entorno en la sesión de shell actual:

$ . /etc/default/locale

¿Qué tal sudo dpkg-reconfigure locales? Si juegas alrededor de él conocerás 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 localización y locale.gen se compile, setlocale(category, locale) debería funcionar sin lanzamientos locale.Error: unsupoorted locale setting. Puede comprobar la cadena correctaen_US.UTF-8/en_US/....etc para ser establecido en setlocale(), observando el archivo /etc/locale.gen, y luego descomentarlo y compilarlo como se desee. zh_CN GB2312 sin punto en ese archivo significa que la cadena correcta es zh_CN y zh_CN.GB2312.

 1
Author: 林果皞,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-04 03:40:20

Tengo el mismo problema, y "export LC_ALL=c" no funcionó para mí,
Prueba export LC_ALL="en_US.UTF-8" (funcionará).

 0
Author: Benyamin Jafari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-12 10:01:54

El mensaje de error indica un problema con la configuración regional. Para arreglar esto como se indica en otras respuestas, debe modificar su configuración regional.

En Mac OS X Sierra encontré que la mejor manera de hacer esto era modificar el archivo ~/bash_profile de 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 cli actual a menos que vuelva a cargar el perfil bash utilizando: source ~/.bash_profile.

Esta respuesta está bastante cerca de las respuestas que he publicado en otras no idénticas, no duplicadas preguntas (es decir, no relacionadas con pipenv) pero que requieren la misma solución.

Para el moderador: Con respeto; mi respuesta anterior se eliminó por esta razón, pero siento 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 diferentes situaciones, idiomas y entornos que podrían desencadenar ese error.

Por lo tanto, A) no tiene sentido marcar las preguntas como duplicadas y B) no tiene sentido adaptar la respuesta ya sea porque la solución es muy simple, es la misma en cada caso y no se beneficia de la ornamentación.

 0
Author: geoidesic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-29 21:27:24