I’m not sure if this is the best place to post this, but a colleague and I feel that it is important to at least inform the community in case someone else is experiencing this issue.
When trying to import pyplot, from the following code:
from psychopy import core, visual, gui, data, event, parallel
from psychopy.tools.filetools import fromFile, toFile
import time, random, os, sys, serial, ctypes, itertools
import numpy as np
from PIL import Image, ImageDraw
import copy as copy
from matplotlib import pyplot as plt
I would receive this error:
LookupError Traceback (most recent call last)
/Users/Eichenbaum/HWNI/test_HRL_v1_cluster.py in <module>()
7 from PIL import Image, ImageDraw
8 import copy as copy
----> 9 from matplotlib import pyplot as plt
10
11 TESTMODE = False
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py in <module>()
28 import matplotlib
29 import matplotlib.colorbar
---> 30 from matplotlib import style
31 from matplotlib import _pylab_helpers, interactive
32 from matplotlib.cbook import dedent, silent_list, is_string_like, is_numlike
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/style/__init__.py in <module>()
1 from __future__ import absolute_import
2
----> 3 from .core import use, context, available, library, reload_library
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/style/core.py in <module>()
211 # Load style library
212 # ==================
--> 213 _base_library = load_base_library()
214
215 library = None
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/style/core.py in load_base_library()
156 """Load style library defined in this package."""
157 library = dict()
--> 158 library.update(read_style_directory(BASE_LIBRARY_PATH))
159 return library
160
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/style/core.py in read_style_directory(style_dir)
189 styles = dict()
190 for path, name in iter_style_files(style_dir):
--> 191 styles[name] = rc_params_from_file(path, use_default_template=False)
192 return styles
193
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/__init__.pyc in rc_params_from_file(fname, fail_on_error, use_default_template)
1149 parameters specified in the file. (Useful for updating dicts.)
1150 """
-> 1151 config_from_file = _rc_params_in_file(fname, fail_on_error)
1152
1153 if not use_default_template:
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/__init__.pyc in _rc_params_in_file(fname, fail_on_error)
1066 cnt = 0
1067 rc_temp = {}
-> 1068 with _open_file_or_url(fname) as fd:
1069 try:
1070 for line in fd:
/Users/Eichenbaum/anaconda/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")
/Users/Eichenbaum/anaconda/lib/python2.7/site-packages/matplotlib/__init__.pyc in _open_file_or_url(fname)
1051 if encoding is None:
1052 encoding = "utf-8"
-> 1053 with io.open(fname, encoding=encoding) as f:
1054 yield f
1055
LookupError: unknown encoding:
We tried to uninstall matplotlib and reinstall it. We tried to set up a new environment with new installs of all necessary packages, but we ran into the same error every time.
After somewhat random trial and error, we figured out that if you have from matplotlib import pyplot
as the first line in the script (and not having attempted to run the script before in the same python session), the error did not appear and pyplot was successfully imported.
To test it even further, we found that the error was with from psychopy import core, visual, giu, data, event, parallel
, such that, if you run from psychopy import <module>
individually for each one, you don’t run into the pyplot error. However, only when running from psychopy import <module>, <module>
, and specifically visual, gui
, does the encoding error appear when attempting to import pyplot. When doing core, gui
, no subsequent pyplot importing error occurs, so I’m not sure what exactly the case is, as it’s not just simply having gui
imported at the same time (i.e. using commas) as the other modules since we see that interaction with (at least [didn’t test all other interactions]) visual
.
This error only occurs if you attempt to import the psychopy modules prior to pyplot, as importing pyplot first fixes the problem. Again, I do not know why this is happening, nor do I know how to fix it other than just avoiding it, so take it for what it is. Hopefully this is helpful to someone.