I've read through a dozen google entries and other SO questions regarding the same issue but I can't fix it. The example error code is: import matplotlib as plt
, but plenty of other things will trigger it.
The whole output is:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-11-20da4deed62d> in <module>()
1 #import pandas as pd
----> 2 import matplotlib as plt
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py in <module>()
1129
1130 # this is the instance used by the matplotlib classes
-> 1131 rcParams = rc_params()
1132
1133 if rcParams['examples.directory']:
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py in rc_params(fail_on_error)
973 return ret
974
--> 975 return rc_params_from_file(fname, fail_on_error)
976
977
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py in rc_params_from_file(fname, fail_on_error, use_default_template)
1098 parameters specified in the file. (Useful for updating dicts.)
1099 """
-> 1100 config_from_file = _rc_params_in_file(fname, fail_on_error)
1101
1102 if not use_default_template:
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py in _rc_params_in_file(fname, fail_on_error)
1016 cnt = 0
1017 rc_temp = {}
-> 1018 with _open_file_or_url(fname) as fd:
1019 try:
1020 for line in fd:
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.pyc in __enter__(self)
15 def __enter__(self):
16 try:
---> 17 return self.gen.next()
18 except StopIteration:
19 raise RuntimeError("generator didn't yield")
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py in _open_file_or_url(fname)
998 else:
999 fname = os.path.expanduser(fname)
-> 1000 encoding = locale.getdefaultlocale()[1]
1001 if encoding is None:
1002 encoding = "utf-8"
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.pyc in getdefaultlocale(envvars)
541 else:
542 localename = 'C'
--> 543 return _parse_localename(localename)
544
545
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.pyc in _parse_localename(localename)
473 elif code == 'C':
474 return None, None
--> 475 raise ValueError, 'unknown locale: %s' % localename
476
477 def _build_localename(localetuple):
ValueError: unknown locale: UTF-8
This error shows up in a Jupyter Notebook, trying different codes, but so far not in the terminal.
I thought they might be using different binaries but it doesn't look that way running print sys.executable
:
- Notebook:
/usr/local/opt/python/bin/python2.7
- CLI:
/usr/local/opt/python/bin/python2.7
Trying to find out more, I run this in the Python CLI:
>>> import locale
>>> print locale.getdefaultlocale()
('en_US', 'UTF-8')
And then in a Notebook:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-1-35604c361744> in <module>()
1 import locale
----> 2 print locale.getdefaultlocale()
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.pyc in getdefaultlocale(envvars)
541 else:
542 localename = 'C'
--> 543 return _parse_localename(localename)
544
545
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.pyc in _parse_localename(localename)
473 elif code == 'C':
474 return None, None
--> 475 raise ValueError, 'unknown locale: %s' % localename
476
477 def _build_localename(localetuple):
ValueError: unknown locale: UTF-8
print locale.getlocale()
on the other hand gets the same output in both places: (None, None)
All I found is that I have to fix my locale settings, but they seem just fine in the Terminal:
$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
Why this discrepancy between Jupyter and Python's CLI? And more importantly, how can I fix Jupyter?
Aucun commentaire:
Enregistrer un commentaire