Python Pelican 3.3 鹈鹕快速入门错误“ValueError:未知语言环境:UTF-8”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19961239/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 15:04:40  来源:igfitidea点击:

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

pythonpython-2.7pelican

提问by Richo

When I was trying to use pelican3.3, I typed the commend "pelican-quickstart", some errors showed up.

当我尝试使用 pelican3.3 时,我输入了“pelican-quickstart”命令,出现了一些错误。

These are the errors:

这些是错误:

(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

My OS is OS X Mavericks.

我的操作系统是 OS X Mavericks。

采纳答案by Gerrat

You could try a solution posted hereor here. Basically, add some lines to your ~/.bash_profile:

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

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

There is an outstanding bug reportrelated to this issue. It appears that Python makes some assumptions about the format of locale names that aren't universally valid. Explicitly setting these environment vars is basically just a workaround for that bug.

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

[Edit:]As @asmeurer correctly points out, the above fix assumes English and the U.S. You should really pick your preferred locale from the list given by locale -a(generally one that ends in UTF-8).

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

回答by JasonWayne

Gerrat's answer works, and I believe we should mention that if you use somthing like zsh, you should add lines to ~/.zshrcinstead of ~/.bash_profileor ~/.bash_rc

杰拉特的回答有效,我相信我们应该提到,如果你使用类似的东西zsh,你应该添加行~/.zshrc而不是~/.bash_profile~/.bash_rc

回答by Sanjay Chan

Upstairs answers were quick great! But I believe people lazy like me want to change the global environment in case never change again while change to another Login user. So we need to change the file like:

楼上的回答好快!但是我相信像我这样懒惰的人想要更改全局环境,以防在更改为另一个登录用户时不再更改。所以我们需要像这样更改文件:

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

And then add the two line in the following files

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

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

Remember do not miss one of them, it doesn't work for me just $LANG or $LC_ALL. After that run the command to active the environment.

记住不要错过其中之一,它仅适用于 $LANG 或 $LC_ALL 对我不起作用。之后运行命令以激活环境。

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

Again, lazy people like me can finish in one line command.

同样,像我这样的懒人可以在一行命令中完成。

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

回答by asmeurer

I'm reposting my answer from this questionhere, since that it was marked as a duplicate of this one, and the accepted answer on this question is wrong in many ways.

我在这里重新发布我对这个问题的回答,因为它被标记为这个问题的重复,并且这个问题的公认答案在很多方面都是错误的。

This is a bug in the OS X Terminal app that only shows up in certain locales (country/language combinations). Open Terminal in /Applications/Utilities and uncheck the box “Set locale environment variables on startup”.

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

enter image description here

在此处输入图片说明

This will set your LANGenvironment variable to be empty. This may cause terminal use to incorrect settings for your locale. The locale command in the Terminal will tell you what settings are used. To use the correct language, add a line to your bash profile (typically ~/.profile)

这会将您的LANG环境变量设置为空。这可能会导致终端使用您的区域设置不正确。终端中的 locale 命令会告诉您使用了哪些设置。要使用正确的语言,请在您的 bash 配置文件中添加一行(通常为~/.profile

export LANG=your-lang

Replace your-langwith the correct locale specifier for your language. The command locale -awill show you all the specifiers. For example, the language code for US English is en_US.UTF-8. The locale affects what translations are used when they are available, and also how dates, currencies, and decimals are formatted.

替换your-lang为您的语言的正确区域设置说明符。该命令locale -a将向您显示所有说明符。例如,美国英语的语言代码是en_US.UTF-8。区域设置会影响可用时使用的翻译,以及日期、货币和小数的格式。

Note, this image and content were taken from http://conda.pydata.org/docs/troubleshooting.html#unknown-locale(I'm also the original author of that page).

请注意,此图片和内容取自http://conda.pydata.org/docs/troubleshooting.html#unknown-locale(我也是该页面的原作者)。

回答by Michiel Roos

For some reason I also needed:

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

export LC_CTYPE=en_US.UTF-8

回答by Sti?o

None of the solutions mentioned here worked for me running a python 3.7 project in a local app engine environment.

这里提到的所有解决方案都不适合我在本地应用程序引擎环境中运行 python 3.7 项目。

Although I could retrieve the locale through the command line just fine:

虽然我可以通过命令行检索语言环境就好了:

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

That locale could not be found within the app engine environment:

在应用引擎环境中找不到该语言环境:

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

So I had to explicitly set env_variablesin my app.yaml file:

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

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

And that solved the bug.

这解决了这个错误。