IPython Notebook 区域设置错误

44 投票
4 回答
53577 浏览
提问于 2025-04-17 19:45

在安装了最新的Mac OSX 64位的Anaconda Python发行版后,我在尝试启动IPython Notebook时总是遇到一个ValueError错误。

启动ipython是没问题的:

3-millerc-~:ipython
Python 2.7.3 |Anaconda 1.4.0 (x86_64)| (default, Feb 25 2013, 18:45:56) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

但是启动ipython notebook时:

4-millerc-~:ipython notebook

就会出现ValueError错误(带有错误追踪信息):

Traceback (most recent call last):
  File "/Users/millerc/anaconda/bin/ipython", line 7, in <module>
    launch_new_instance()
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/frontend/terminal/ipapp.py", line 388, in launch_new_instance
    app.initialize()
  File "<string>", line 2, in initialize
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/config/application.py", line 84, in catch_config_error
    return method(app, *args, **kwargs)
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/frontend/terminal/ipapp.py", line 313, in initialize
    super(TerminalIPythonApp, self).initialize(argv)
  File "<string>", line 2, in initialize
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/config/application.py", line 84, in catch_config_error
    return method(app, *args, **kwargs)
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/core/application.py", line 325, in initialize
    self.parse_command_line(argv)
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/frontend/terminal/ipapp.py", line 308, in parse_command_line
    return super(TerminalIPythonApp, self).parse_command_line(argv)
  File "<string>", line 2, in parse_command_line
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/config/application.py", line 84, in catch_config_error
    return method(app, *args, **kwargs)
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/config/application.py", line 420, in parse_command_line
    return self.initialize_subcommand(subc, subargv)
  File "<string>", line 2, in initialize_subcommand
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/config/application.py", line 84, in catch_config_error
    return method(app, *args, **kwargs)
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/config/application.py", line 352, in initialize_subcommand
    subapp = import_item(subapp)
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/utils/importstring.py", line 40, in import_item
    module = __import__(package,fromlist=[obj])
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/frontend/html/notebook/notebookapp.py", line 46, in <module>
    from .handlers import (LoginHandler, LogoutHandler,
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/IPython/frontend/html/notebook/handlers.py", line 36, in <module>
    from docutils.core import publish_string
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/docutils/core.py", line 20, in <module>
    from docutils import frontend, io, utils, readers, writers
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/docutils/frontend.py", line 41, in <module>
    import docutils.utils
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/docutils/utils/__init__.py", line 20, in <module>
    from docutils.io import FileOutput
  File "/Users/millerc/anaconda/lib/python2.7/site-packages/docutils/io.py", line 18, in <module>
    from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
  File "/Users/millerc/anaconda/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/millerc/anaconda/lib/python2.7/locale.py", line 503, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/millerc/anaconda/lib/python2.7/locale.py", line 435, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

在终端运行locale命令:

5-millerc-~:locale 
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

4 个回答

13

在iTerm中,打开菜单

Preferences -> Profiles -> Terminal -> (Environment) 

然后取消勾选

"Set locale variables automatically"

这样这个错误就消失了。

30

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

在这里输入图片描述

这样做会让你的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(我也是那页内容的原作者)。

100

在这里,我总结了一个解决方案,可以在这个链接找到:http://blog.lobraun.de/2009/04/11/mercurial-on-mac-os-x-valueerror-unknown-locale-utf-8/

我在我的 .bash_profile 文件中添加了以下几行:

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

然后我重新加载了这个配置文件:

source ~/.bash_profile

接着我再次运行了 ipython

ipython notebook

更改地区设置

上面的做法适用于美国地区的英语。如果你想要不同的设置,可以进行调整。

为了查看你系统当前的设置,可以使用:

$ locale

如果你想获取系统上所有有效设置的列表,可以使用:

$ locale -a

然后选择你喜欢的地区设置。例如,如果你想要瑞士法语的设置,解决方案会是这样的:

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

撰写回答