Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IPython Notebook locale error [duplicate]

After installing the latest Mac OSX 64-bit Anaconda Python distribution, I keep getting a ValueError when trying to start the IPython Notebook.

Starting ipython works fine:

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. 

But starting ipython notebook:

4-millerc-~:ipython notebook 

Results in the ValueError (with traceback):

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 

Running the locale command from the terminal:

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= 
like image 308
Clayton Avatar asked Mar 20 '13 14:03

Clayton


2 Answers

I summarize here the solution to be found on: http://blog.lobraun.de/2009/04/11/mercurial-on-mac-os-x-valueerror-unknown-locale-utf-8/

I added these lines to my .bash_profile:

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

I reloaded the profile:

source ~/.bash_profile 

I then ran ipython again:

ipython notebook 

Changing locales

The above will work for the English language in a US locale. One may want different settings.

At the risk of stating the obvious, to discover the current settings for your system, use:

$ locale 

And to retrieve a list of all valid settings on your system:

$ locale -a 

Then choose your preferred locale. For example, for a Swiss French locale, the solution would look like this:

export LC_ALL=fr_CH.UTF-8 export LANG=fr_CH.UTF-8 
like image 177
daedalus Avatar answered Sep 24 '22 16:09

daedalus


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”.

enter image description here

This will set your LANG environment 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)

export LANG=your-lang 

Replace your-lang with the correct locale specifier for your language. The command locale -a will 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.

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).

like image 26
asmeurer Avatar answered Sep 24 '22 16:09

asmeurer