Помилка Pelican 3.3-пелікан-швидкий старт "ValueError: невідома мова: UTF-8"


154

Коли я намагався використовувати pelican3.3, я набрав коментар "pelican-quickstart", виявились деякі помилки.

Це помилки:

(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

Моя ОС - OS X Mavericks.


була така ж проблема під час використання kivy, на mavericks
Ciasto piekarz

Відповіді:


456

Ви можете спробувати рішення, розміщене тут або тут . В основному, додайте рядки до свого ~ / .bash_profile:

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

Існує непересічний звіт про помилку, пов’язаний із цією проблемою. Здається, що Python робить деякі припущення щодо формату імен локалів, які не є універсальними. Явне встановлення цих змін середовища в основному є лише вирішенням цієї помилки.

[Редагувати:] Як правильно вказує @asmeurer, вищенаведене виправлення передбачає англійську та американську мови. Ви повинні дійсно вибрати потрібний локальний список зі списку, наданого locale -a(як правило, тим, що закінчується UTF-8).


У мене був вихід / вхід на ПК. Дякую за все.
Хосе Карлос Рамос Карменате

8
Це вирішило і для мене проблему з анакондою на MAC OSX в рибній оболонці. встановити -x LC_ALL en_US.UTF-8 встановити -x LANGen_US.UTF-8
andershqst

2
Це спрацювало, але чи може хтось пояснити, чому ми повинні це робити?
jblixr

6
Ось один лайнер, щоб зробити це зручніше:echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bashrc && source ~/.bashrc
waldyrious

2
Це виправлення є правильним лише в тому випадку, якщо ви розмовляєте англійською та живете в США (що зазвичай не стосується людей, які бачать цю проблему). Справжнє виправлення полягає у встановленні LANG правильного рядка для вашої локалі (ви можете перелічити їх усі locale -a), як правило, використовуючи той, який закінчується UTF-8.
асмеурер

9

Відповідь Геррата працює, і я вважаю, що слід згадати, що якщо ви використовуєте щось подібне zsh, вам слід додати рядки ~/.zshrcзамість ~/.bash_profileабо~/.bash_rc


9

Відповіді наверх були швидко чудовими! Але я вважаю, що такі ледачі, як я, хочуть змінити глобальне середовище, якщо ніколи більше не зміниться, переходячи на іншого користувача Логін. Тому нам потрібно змінити файл на зразок:

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

А потім додайте два рядки в наступні файли

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

Пам'ятайте, не пропустіть жодного з них, він не працює для мене просто $ LANG або $ LC_ALL. Після цього запустіть команду активного оточення.

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

Знову ж таки, ледачі, як я, можуть закінчити команду одним рядком.

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

3

Я репоную тут свою відповідь з цього питання , оскільки він був позначений як дублікат цього, і прийнята відповідь на це питання багато в чому помилкова.

Це помилка в додатку Terminal OS X, який відображається лише в певних локалях (комбінації країни / мови). Відкрийте термінал в / Програми / Утиліти та зніміть прапорець "Встановити змінні середовища локальної локальної системи при запуску".

введіть тут опис зображення

Це встановить вашу LANGзмінну середовища порожньою. Це може спричинити використання терміналу для неправильних налаштувань для вашої мови. Команда locale у Терміналі підкаже, які параметри використовуються. Щоб скористатися правильною мовою, додайте рядок у свій профіль bash (як правило ~/.profile)

export LANG=your-lang

Замініть your-langправильним специфікатором локалі для вашої мови. Команда locale -aпокаже вам усі специфікатори. Наприклад, код мови для американської англійської мови єen_US.UTF-8 . Локал впливає на те, які переклади використовуються, коли вони доступні, а також на форматування дат, валют та десяткових знаків.

Зауважте, це зображення та вміст було взято з http://conda.pydata.org/docs/troubleshooting.html#unknown-locale (я також оригінальний автор цієї сторінки).


2

Жодне з згаданих тут рішень не працювало для мене, коли я виконував проект python 3.7 в локальному середовищі двигуна додатків.

Хоча я міг би знайти локаль за допомогою командного рядка просто:

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

Цей локал не вдалося знайти в середовищі двигуна програми:

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

Тому мені довелося чітко встановити env_variablesу своєму файлі app.yaml:

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

І це вирішило помилку.


1

Чомусь мені також потрібні були:

export LC_CTYPE=en_US.UTF-8

Чомусь ти отримав відповідь, яку я шукав ... минуло 2 години. Дякую!
Ківад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.