web-dev-qa-db-fra.com

Erreur de paramètres régionaux du bloc-notes IPython

Après avoir installé la dernière version Mac OSX Anaconda 64 bits Python , je reçois toujours une ValueError lorsque je tente de démarrer le bloc-notes IPython.

Le démarrage d'ipython fonctionne correctement:

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.

Mais à partir du cahier ipython:

4-millerc-~:ipython notebook

Résultats dans ValueError (avec 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

Exécution de la commande locale à partir du 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=
42
cmiller8

Je résume ici la solution à trouver sur: http://blog.lobraun.de/2009/04/11/Mercurial-on-mac-os-x-valueerror-unknown-locale-utf-8/

J'ai ajouté ces lignes à mon .bash_profile:

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

J'ai rechargé le profil:

source ~/.bash_profile

J'ai ensuite relancé ipython:

ipython notebook

Modification des paramètres régionaux

Ce qui précède fonctionnera pour la langue anglaise dans un environnement américain. On peut vouloir des paramètres différents.

Au risque d'énoncer une évidence, pour découvrir les paramètres actuels de votre système, utilisez:

$ locale

Et pour récupérer une liste de tous les paramètres valides sur votre système:

$ locale -a

Choisissez ensuite vos paramètres régionaux préférés. Par exemple, pour un environnement local suisse français, la solution ressemblerait à ceci:

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

Il s'agit d'un bogue dans l'application OS X Terminal qui n'apparaît que dans certains paramètres régionaux (combinaisons pays/langues). Ouvrez Terminal dans/Applications/Utilitaires et décochez la case "Définir les variables d'environnement locales au démarrage".

enter image description here

Ainsi, votre variable d'environnement LANG sera vide. Cela peut entraîner une utilisation incorrecte du terminal pour vos paramètres régionaux. La commande locale dans le terminal vous indiquera les paramètres utilisés. Pour utiliser la langue correcte, ajoutez une ligne à votre profil bash (généralement ~/.profile)

export LANG=your-lang

Remplacer your-lang avec le spécificateur de paramètres régionaux approprié pour votre langue. La commande locale -a vous montrera tous les spécificateurs. Par exemple, le code de langue pour l'anglais américain est en_US.UTF-8. Les paramètres régionaux affectent les traductions utilisées lorsqu'elles sont disponibles, ainsi que la mise en forme des dates, des devises et des décimales.

Remarque, cette image et ce contenu sont tirés de http://conda.pydata.org/docs/troubleshooting.html#unknown-locale (je suis également l'auteur original de cette page).

29
asmeurer

dans iTerm aller au menu

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

puis décocher

"Set locale variables automatically"

fait disparaître cette erreur.

13
AceRymond

Comme votre LC_CTYPE est incorrect, vous devez savoir où cette mauvaise valeur est définie et la remplacer par quelque chose comme en_US.UTF-8.

3
wRAR