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

时间:2013-11-13 18:10:51

标签: 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

我的操作系统是OS X Mavericks。

6 个答案:

答案 0 :(得分:453)

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

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

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

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

答案 1 :(得分:9)

Gerrat的回答是有效的,我相信我们应该提一下,如果你使用像zsh这样的东西,你应该添加行~/.zshrc而不是~/.bash_profile或{{1 }}

答案 2 :(得分:8)

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

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 :(得分:3)

我在this question处发布了我的答案,因为它被标记为此答案的副本,并且在这个问题上接受的答案在很多方面都是错误的。 < / p>

这是OS X终端应用中的一个错误,它只出现在某些区域设置(国家/语言组合)中。在/ Applications / Utilities中打开终端并取消选中“在启动时设置区域设置环境变量”框。

enter image description here

这会将您的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(我也是该页面的原作者)。

答案 4 :(得分:1)

出于某种原因,我还需要:

export LC_CTYPE=en_US.UTF-8

答案 5 :(得分:1)

这里提到的所有解决方案都不适合我在本地应用程序引擎环境中运行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

所以我必须在我的app.yaml文件中明确设置env_variables

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

这解决了该错误。