Pelican 3.3 error de inicio rápido de pelican "ValueError: configuración regional desconocida: UTF-8"

154

Cuando intentaba usar pelican3.3, escribí el comando "pelican-quickstart", aparecieron algunos errores.

Estos son los errores:

(PelicanEnv)59-127-113-90:myblog Richo$ pelican-quickstart
Traceback (most recent call last):
  File "/Users/Richo/Dropbox/Github/PelicanEnv/bin/pelican-quickstart", line 9, in <module>
    load_entry_point('pelican==3.3', 'console_scripts', 'pelican-quickstart')()
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/__init__.py", line 16, in <module>
    from pelican.generators import (ArticlesGenerator, PagesGenerator,
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/generators.py", line 20, in <module>
    from pelican.readers import Readers
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/readers.py", line 11, in <module>
    import docutils.core
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/core.py", line 20, in <module>
    from docutils import frontend, io, utils, readers, writers
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/frontend.py", line 41, in <module>
    import docutils.utils
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/utils/__init__.py", line 20, in <module>
    import docutils.io
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/io.py", line 18, in <module>
    from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/utils/error_reporting.py", line 47, in <module>
    locale_encoding = locale.getlocale()[1] or locale.getdefaultlocale()[1]
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/locale.py", line 513, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/locale.py", line 445, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

Mi sistema operativo es OS X Mavericks.

Richo
fuente
tuvo el mismo problema mientras usaba kivy, en disidentes
Ciasto piekarz

Respuestas:

456

Puede probar una solución publicada aquí o aquí . Básicamente, agregue algunas líneas a su ~ / .bash_profile:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Hay un informe de error pendiente relacionado con este problema. Parece que Python hace algunas suposiciones sobre el formato de los nombres locales que no son universalmente válidos. Establecer explícitamente estos vars de entorno es básicamente una solución para ese error.

[Editar:] Como @asmeurer señala correctamente, la corrección anterior supone inglés y EE. UU. Realmente debería elegir su ubicación preferida de la lista dada por locale -a(generalmente, una que termina en UTF-8).

Gerrat
fuente
Tuve que cerrar sesión / iniciar sesión en la PC. Gracias por todo.
Jose Carlos Ramos Carmenates
8
Esto resolvió el problema para mí también con anaconda en MAC OSX en fish shell. set -x LC_ALL en_US.UTF-8 set -x LANGen_US.UTF-8
andershqst
2
Funcionó, pero ¿alguien puede explicar por qué deberíamos hacerlo?
jblixr
66
Aquí hay una sola línea para hacer esto más conveniente:echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bashrc && source ~/.bashrc
waldyrious
2
Esta solución solo es correcta si habla inglés y vive en los EE. UU. (Lo que generalmente no es el caso para las personas que ven este problema). La solución real es establecer LANG la cadena correcta para su entorno local (puede enumerarlos todos locale -a), generalmente usando el que termina con UTF-8.
asmeurer
9

La respuesta de Gerrat funciona, y creo que deberíamos mencionar que si usa algo así zsh, debería agregar líneas en ~/.zshrclugar de ~/.bash_profileo~/.bash_rc

JasonWayne
fuente
9

¡Las respuestas de arriba fueron rápidas geniales! Pero creo que la gente perezosa como yo quiere cambiar el entorno global en caso de que nunca vuelva a cambiar mientras cambia a otro usuario de inicio de sesión. Entonces necesitamos cambiar el archivo como:

sudo vi /etc/profile or sudo vi /etc/bashrc

Y luego agregue las dos líneas en los siguientes archivos

export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"

Recuerda no te pierdas uno de ellos, no funciona para mí solo $ LANG o $ LC_ALL. Después de eso, ejecute el comando para activar el entorno.

sudo source /etc/profile 
sudo source /etc/bashrc
source ~/.bash_profile 
source ~/.zshrc

Una vez más, la gente perezosa como yo puede terminar en un comando de línea.

echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bash_profile && source ~/.bash_profile
Sanjay Chan
fuente
3

Estoy volviendo a publicar mi respuesta de esta pregunta aquí, ya que se marcó como un duplicado de esta, y la respuesta aceptada en esta pregunta es incorrecta en muchos sentidos.

Este es un error en la aplicación OS X Terminal que solo aparece en ciertas configuraciones regionales (combinaciones de país / idioma). Abra Terminal en / Aplicaciones / Utilidades y desactive la casilla "Establecer variables de entorno de configuración regional en el inicio".

ingrese la descripción de la imagen aquí

Esto configurará su LANGvariable de entorno para que esté vacía. Esto puede causar el uso de terminales a configuraciones incorrectas para su localidad. El comando locale en la Terminal le dirá qué configuraciones se utilizan. Para usar el idioma correcto, agregue una línea a su perfil de bash (generalmente ~/.profile)

export LANG=your-lang

Reemplace your-langcon el especificador de configuración regional correcto para su idioma. El comando locale -ate mostrará todos los especificadores. Por ejemplo, el código de idioma para el inglés de EE en_US.UTF-8. UU . Es . La configuración regional afecta qué traducciones se usan cuando están disponibles, y también cómo se formatean las fechas, las monedas y los decimales.

Tenga en cuenta que esta imagen y el contenido fueron tomados de http://conda.pydata.org/docs/troubleshooting.html#unknown-locale (también soy el autor original de esa página).

asmeurer
fuente
2

Ninguna de las soluciones mencionadas aquí funcionó para mí al ejecutar un proyecto de Python 3.7 en un entorno de motor de aplicación local.

Aunque podría recuperar la configuración regional a través de la línea de comando muy bien:

python3 -c 'import locale; print(locale.getdefaultlocale());'
('en_US', 'UTF-8')  

Ese entorno local no se pudo encontrar en el entorno del motor de la aplicación:

File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/locale.py", line 568, in getdefaultlocale
    return _parse_localename(localename)
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/locale.py", line 495, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

Así que tuve que establecer explícitamente env_variablesen mi archivo app.yaml:

env_variables:
  LC_ALL: "en_US:UTF_8"
  LC_CTYPE: "en_US:UTF_8"

Y eso resolvió el error.

Stiño
fuente
1

Por alguna razón, también necesitaba:

export LC_CTYPE=en_US.UTF-8
Michiel Roos
fuente
Por alguna razón, obtuviste la respuesta que estaba buscando ... han pasado como 2 horas. ¡Gracias!
Kiwad el