Pelican 3.3 pelican-quickstart错误"ValueError:unknown locale:UTF-8"

Ric*_*cho 153 python python-2.7 pelican

当我尝试使用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
Run Code Online (Sandbox Code Playgroud)

我的操作系统是OS X Mavericks.

Ger*_*rat 456

您可以尝试在此处此处发布的解决方案.基本上,在〜/ .bash_profile中添加一些行:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

有一个与此问题相关的未完成的错误报告.似乎Python对一般不具有普遍有效的语言环境名称的格式做出了一些假设.明确设置这些环境变量基本上只是该bug的解决方法.

[编辑:]正如@asmeurer正确指出的那样,上面的修复假定英语和美国你应该从列表给出的列表中选择你喜欢的语言环境locale -a(通常是一个结束的UTF-8).

  • @josecarlos:您可以在终端中运行source~/.bash_profile ... (9认同)
  • 这也解决了我在鱼壳上MAC OSX上使用anaconda的问题.set -x LC_ALL en_US.UTF-8 set -x LANGEN_US.UTF-8 (8认同)
  • 这是一个更方便的单线程:`echo -e"export LC_ALL = en_US.UTF-8 \nexport LANG = en_US.UTF-8">>〜/ .bashrc && source~/.bashrc` (6认同)
  • 我第三次看这个!工作,谢谢. (3认同)
  • 它有效,但任何人都可以解释为什么我们应该这样做? (2认同)
  • 只有当您说英语并住在美国时,此修复才是正确的(对于看到此问题的人来说通常情况并非如此).真正的解决方法是将`LANG`设置为您的语言环境的正确字符串(您可以使用`locale -a`列出它们),通常使用以`UTF-8`结尾的字符串. (2认同)

Jas*_*yne 9

Gerrat的答案有效,我相信我们应该提一下,如果你使用类似的东西zsh,你应该添加线~/.zshrc代替~/.bash_profile~/.bash_rc


San*_*han 9

楼上的答案很快!但我相信像我这样懒惰的人想要改变全球环境以防万一在改变到另一个登录用户时再也不会改变.所以我们需要更改文件,如:

sudo vi /etc/profile or sudo vi /etc/bashrc
Run Code Online (Sandbox Code Playgroud)

然后在以下文件中添加两行

export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)

记住不要错过其中一个,它对我只有$ LANG或$ LC_ALL不起作用.之后运行命令以激活环境.

sudo source /etc/profile 
sudo source /etc/bashrc
source ~/.bash_profile 
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

再一次,像我这样懒惰的人可以完成一行命令.

echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bash_profile && source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)