Pelican 3.3 erro de início rápido da pelican “ValueError: código de idioma desconhecido: UTF-8”


154

Quando eu estava tentando usar o pelican3.3, digitei o elogio "pelican-quickstart", alguns erros apareceram.

Estes são os erros:

(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

Meu sistema operacional é o OS X Mavericks.


teve mesmo problema ao usar Kivy, em mavericks
ciasto Piekarz

Respostas:


456

Você pode tentar uma solução postada aqui ou aqui . Basicamente, adicione algumas linhas ao seu ~ / .bash_profile:

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

Há um excelente relatório de bug relacionado a esse problema. Parece que o Python faz algumas suposições sobre o formato dos nomes de localidades que não são universalmente válidos. Definir explicitamente esses ambientes é basicamente uma solução alternativa para esse bug.

[Editar:] Como o @asmeurer aponta corretamente, a correção acima assume o inglês e os EUA. Você deve realmente escolher seu local preferido da lista fornecida por locale -a(geralmente uma que termina em UTF-8).


Eu tive logout / login no pc. Obrigado por tudo.
Jose Carlos Ramos Carmenates

8
Isso resolveu o problema para mim também com anaconda no MAC OSX em casca de peixe. set -x LC_ALL pt-BR_UT.UTF-8 set -x LANGen_US.UTF-8
andershqst

2
Funcionou, mas alguém pode explicar por que devemos fazê-lo?
jblixr

6
Aqui está um one-liner para fazer isso de forma mais conveniente:echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bashrc && source ~/.bashrc
waldyrious

2
Essa correção só está correta se você falar inglês e morar nos EUA (o que normalmente não é o caso das pessoas que veem esse problema). A correção real é definir LANG a string correta para o seu código do idioma (você pode listá-los todos locale -a), geralmente usando o que termina com UTF-8.
asmeurer 11/08/16

9

A resposta de Gerrat funciona e acredito que devemos mencionar que, se você usar algo parecido zsh, deverá adicionar linhas em ~/.zshrcvez de ~/.bash_profileou~/.bash_rc


9

As respostas no andar de cima foram excelentes rapidamente! Mas acredito que pessoas preguiçosas como eu querem mudar o ambiente global, caso nunca mudem novamente enquanto mudam para outro usuário de login. Então, precisamos alterar o arquivo como:

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

E adicione as duas linhas nos seguintes arquivos

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

Lembre-se de não perder um deles, ele não funciona para mim apenas $ LANG ou $ LC_ALL. Depois disso, execute o comando para ativar o ambiente.

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

Novamente, pessoas preguiçosas como eu podem terminar em um comando de linha.

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

3

Estou reposicionando minha resposta desta pergunta aqui, uma vez que ela foi marcada como uma duplicata desta e a resposta aceita sobre esta questão está errada de várias maneiras.

Este é um erro no aplicativo OS X Terminal que aparece apenas em determinados locais (combinações de países / idiomas). Abra o Terminal em / Aplicativos / Utilitários e desmarque a caixa "Definir variáveis ​​de ambiente locale na inicialização".

insira a descrição da imagem aqui

Isso definirá sua LANGvariável de ambiente para estar vazia. Isso pode causar o uso do terminal com configurações incorretas para o seu código do idioma. O comando locale no Terminal informará quais configurações são usadas. Para usar o idioma correto, adicione uma linha ao seu perfil do bash (normalmente ~/.profile)

export LANG=your-lang

Substitua your-langpelo especificador de localidade correto para o seu idioma. O comando locale -amostrará todos os especificadores. Por exemplo, o código do idioma para inglês dos EUA é en_US.UTF-8. A localidade afeta quais traduções são usadas quando estão disponíveis e também como datas, moedas e decimais são formatados.

Observe que esta imagem e o conteúdo foram retirados de http://conda.pydata.org/docs/trou Troubleshooting.html#unknown - locale (também sou o autor original dessa página).


2

Nenhuma das soluções mencionadas aqui funcionou para mim executando um projeto python 3.7 em um ambiente de mecanismo de aplicativo local.

Embora eu pudesse recuperar o código do idioma por meio da linha de comando:

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

Não foi possível encontrar esse código de idioma no ambiente do mecanismo de aplicativos:

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

Então eu tive que definir explicitamente env_variablesno meu arquivo app.yaml:

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

E isso resolveu o erro.


1

Por alguma razão, eu também precisava:

export LC_CTYPE=en_US.UTF-8

Por alguma razão, você conseguiu a resposta que eu estava procurando ... já faz duas horas. Obrigado!
Kiwad
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.