Pelican 3.3 errore pelican-quickstart “ValueError: localizzazione sconosciuta: UTF-8”


154

Quando stavo cercando di usare pelican3.3, ho digitato lode "pelican-quickstart", sono comparsi alcuni errori.

Questi sono gli errori:

(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

Il mio sistema operativo è OS X Mavericks.


ha avuto lo stesso problema durante l'utilizzo di kivy, su mavericks
Ciasto piekarz

Risposte:


456

Puoi provare una soluzione pubblicata qui o qui . Fondamentalmente, aggiungi alcune righe al tuo ~ / .bash_profile:

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

Esiste una segnalazione bug in sospeso relativa a questo problema. Sembra che Python faccia alcune ipotesi sul formato dei nomi delle localizzazioni che non sono universalmente valide. L'impostazione esplicita di questi varianti di ambiente è sostanzialmente solo una soluzione per quel bug.

[Modifica:] Come sottolineato correttamente da @asmeurer, la correzione di cui sopra presuppone l'inglese e gli Stati Uniti. Dovresti davvero scegliere la tua località preferita dall'elenco fornito da locale -a(generalmente uno che termina in UTF-8).


Ho avuto il logout / login al pc. Grazie di tutto.
Jose Carlos Ramos Carmenates,

8
Ciò ha risolto il problema anche per me con anaconda su MAC OSX in guscio di pesce. set -x LC_ALL en_US.UTF-8 set -x LANGen_US.UTF-8
andershqst

2
Ha funzionato ma qualcuno può spiegare perché dovremmo farlo?
jblixr

6
Ecco un one-liner per farlo in modo più conveniente:echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bashrc && source ~/.bashrc
waldyrious

2
Questa correzione è corretta solo se parli inglese e vivi negli Stati Uniti (che in genere non è il caso delle persone che vedono questo problema). La vera soluzione è impostare LANG la stringa corretta per la tua locale (puoi elencarli tutti con locale -a), generalmente usando quello che termina UTF-8.
asmeurer,

9

La risposta di Gerrat funziona e credo che dovremmo menzionare che se usi qualcosa del genere zsh, dovresti aggiungere delle righe ~/.zshrcinvece di ~/.bash_profileo~/.bash_rc


9

Le risposte al piano di sopra sono state rapidamente fantastiche! Ma credo che le persone pigre come me vogliano cambiare l'ambiente globale nel caso in cui non cambino mai più mentre si passa a un altro utente Login. Quindi dobbiamo cambiare il file come:

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

E quindi aggiungere le due righe nei seguenti file

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

Ricorda di non perderne uno, non funziona per me solo $ LANG o $ LC_ALL. Successivamente eseguire il comando per attivare l'ambiente.

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

Ancora una volta, le persone pigre come me possono finire con un comando di riga.

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

3

Sto ripubblicando la mia risposta da questa domanda qui, poiché è stata contrassegnata come duplicata di questa domanda e la risposta accettata su questa domanda è sbagliata in molti modi.

Si tratta di un bug nell'app del terminale OS X che viene visualizzato solo in determinate impostazioni locali (combinazioni paese / lingua). Apri Terminale in / Applicazioni / Utility e deseleziona la casella "Imposta variabili di ambiente locale all'avvio".

inserisci qui la descrizione dell'immagine

Ciò imposterà la LANGvariabile di ambiente come vuota. Ciò può causare un utilizzo da parte del terminale di impostazioni errate per la propria locale. Il comando locale nel Terminale ti dirà quali impostazioni sono utilizzate. Per usare la lingua corretta, aggiungi una riga al tuo profilo bash (in genere ~/.profile)

export LANG=your-lang

Sostituisci your-langcon l'identificatore locale corretto per la tua lingua. Il comando locale -ati mostrerà tutti gli identificatori. Ad esempio, il codice della lingua per l'inglese americano è en_US.UTF-8. Le impostazioni locali influiscono sulle traduzioni utilizzate quando sono disponibili e anche sulla modalità di formattazione di date, valute e decimali.

Nota, questa immagine e i contenuti sono stati presi da http://conda.pydata.org/docs/troublesho.html#unknown-locale (sono anche l'autore originale di quella pagina).


2

Nessuna delle soluzioni menzionate qui ha funzionato per me eseguendo un progetto python 3.7 in un ambiente di motore di app locale.

Anche se sono riuscito a recuperare le impostazioni internazionali tramite la riga di comando bene:

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

Impossibile trovare quella locale nell'ambiente del motore dell'app:

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

Quindi ho dovuto impostare esplicitamente il env_variablesmio file app.yaml:

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

E questo ha risolto il bug.


1

Per qualche ragione avevo anche bisogno di:

export LC_CTYPE=en_US.UTF-8

Per qualche motivo, hai ottenuto la risposta che stavo cercando ... sono passate 2 ore. Grazie!
Kiwad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.