Pelican 3.3 Pelican-quickstart error „ValueError: unknown locale: UTF-8”

154

Kiedy próbowałem użyć pelikana3.3, wpisałem polecenie „pelican-quickstart”, pojawiły się błędy.

Oto błędy:

(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

Mój system operacyjny to OS X Mavericks.

Richo
źródło
miałem ten sam problem podczas używania kivy, na mavericks
Ciasto piekarz,

Odpowiedzi:

456

Możesz wypróbować rozwiązanie zamieszczone tutaj lub tutaj . Zasadniczo dodaj kilka linii do swojego ~ / .bash_profile:

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

Istnieje zaległy raport o błędzie związany z tym problemem. Wygląda na to, że Python przyjmuje pewne założenia dotyczące formatu nazw ustawień regionalnych, które nie są powszechnie obowiązujące. Jawne ustawienie tych zmiennych środowiskowych jest w zasadzie tylko obejściem tego błędu.

[Edytuj:] Jak słusznie wskazuje @asmeurer, powyższa poprawka zakłada angielski i Stany Zjednoczone. Naprawdę powinieneś wybrać preferowaną lokalizację z listy podanej przez locale -a(zazwyczaj taka, która kończy się na UTF-8).

Gerrat
źródło
Musiałem się wylogować / zalogować do komputera. Dzięki za wszystko.
Jose Carlos Ramos Carmenates
8
To rozwiązało również problem dla mnie z anacondą na MAC OSX w rybiej muszli. set -x LC_ALL en_US.UTF-8 set -x LANGen_US.UTF-8
andershqst
2
Zadziałało, ale czy ktoś może wyjaśnić, dlaczego powinniśmy to zrobić?
jblixr
6
Oto jedna linijka, aby zrobić to wygodniej:echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bashrc && source ~/.bashrc
waldyrious
2
Ta poprawka jest poprawna tylko wtedy, gdy mówisz po angielsku i mieszkasz w USA (co zwykle nie dotyczy osób, które widzą ten problem). Prawdziwym rozwiązaniem jest ustawienie LANG poprawnego ciągu znaków dla twojego języka (możesz je wszystkie wymienić locale -a), zwykle używając tego, który kończy się na UTF-8.
asmeurer
9

Odpowiedź Gerrata działa i uważam, że powinniśmy wspomnieć, że jeśli używasz czegoś podobnego zsh, powinieneś dodać linie do ~/.zshrczamiast ~/.bash_profilelub~/.bash_rc

JasonWayne
źródło
9

Odpowiedzi na górze były szybkie, świetne! Ale uważam, że ludzie leniwi jak ja chcą zmienić globalne środowisko na wypadek, gdyby nigdy więcej się nie zmieniło podczas zmiany na innego użytkownika logowania. Musimy więc zmienić plik taki jak:

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

A następnie dodaj dwie linie w poniższych plikach

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

Pamiętaj, nie przegap żadnego z nich, dla mnie nie działa tylko $ LANG lub $ LC_ALL. Następnie uruchom polecenie, aby aktywować środowisko.

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

Ponownie, leniwi ludzie, tacy jak ja, mogą zakończyć za pomocą jednej linii poleceń.

echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bash_profile && source ~/.bash_profile
Sanjay Chan
źródło
3

Ponownie zamieszczam tutaj moją odpowiedź na to pytanie , ponieważ została ona oznaczona jako duplikat tego pytania, a przyjęta odpowiedź na to pytanie jest pod wieloma względami błędna.

Jest to błąd w aplikacji OS X Terminal, który pojawia się tylko w niektórych lokalizacjach (kombinacje kraju / języka). Otwórz Terminal w / Applications / Utilities i odznacz pole „Ustaw lokalne zmienne środowiskowe przy uruchamianiu”.

wprowadź opis obrazu tutaj

Spowoduje to ustawienie LANGpustej zmiennej środowiskowej. Może to spowodować użycie terminala do nieprawidłowych ustawień dla twojego języka. Polecenie locale w terminalu powie Ci, jakie ustawienia są używane. Aby użyć właściwego języka, dodaj linię do swojego profilu bash (zazwyczaj ~/.profile)

export LANG=your-lang

Zastąp your-langpoprawnym specyfikatorem ustawień regionalnych dla Twojego języka. Polecenie locale -apokaże wszystkie specyfikatory. Na przykład kod języka angielskiego (USA) to en_US.UTF-8. Ustawienia regionalne wpływają na to, jakie tłumaczenia są używane, gdy są dostępne, a także na formatowanie dat, walut i miejsc dziesiętnych.

Uwaga, to zdjęcie i treść pochodzą z http://conda.pydata.org/docs/troubleshooting.html#unknown-locale (jestem też oryginalnym autorem tej strony).

asmeurer
źródło
2

Żadne z wymienionych tutaj rozwiązań nie zadziałało podczas uruchamiania projektu Python 3.7 w lokalnym środowisku silnika aplikacji.

Chociaż mogłem pobrać ustawienia regionalne za pomocą wiersza poleceń:

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

Nie można znaleźć tego języka w środowisku aparatu aplikacji:

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

Musiałem więc wyraźnie ustawić env_variablesw moim pliku app.yaml:

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

I to rozwiązało problem.

Stiño
źródło
1

Z jakiegoś powodu potrzebowałem również:

export LC_CTYPE=en_US.UTF-8
Michiel Roos
źródło
Z jakiegoś powodu otrzymałeś odpowiedź, której szukałem ... minęły jakieś 2 godziny. Dzięki!
Kiwad