Search code examples
pythonjupyter-notebookanacondapackagejupyter

Can't use Jupyter Notebook: jsonschema apparently missing


When using an Anaconda environment, I can't start Jupyter to work in a notebook. I can do so without the environment, but I need to be able to use the environment. Here's what I do and the errors I get:

ben@ben-K60IJ:~/surveillance_sound_classifier/surveillance_sound_classifier$ source activate EECS352
discarding /home/ben/anaconda/bin from PATH
prepending /home/ben/anaconda/envs/EECS352/bin to PATH
(EECS352)ben@ben-K60IJ:~/surveillance_sound_classifier/surveillance_sound_classifier$ jupyter notebook
Traceback (most recent call last):
  File "/home/ben/anaconda/envs/EECS352/bin/jupyter-notebook", line 4, in <module>
import notebook.notebookapp
  File "/home/ben/anaconda/envs/EECS352/lib/python2.7/site-packages/notebook/notebookapp.py", line 61, in <module>
from .services.contents.manager import ContentsManager
  File "/home/ben/anaconda/envs/EECS352/lib/python2.7/site-packages/notebook/services/contents/manager.py", line 16, in <module>
from nbformat import sign, validate, ValidationError
  File "/home/ben/anaconda/envs/EECS352/lib/python2.7/site-packages/nbformat/__init__.py", line 33, in <module>
from .validator import validate, ValidationError
  File "/home/ben/anaconda/envs/EECS352/lib/python2.7/site-packages/nbformat/validator.py", line 21, in <module>
raise ImportError(str(e) + verbose_msg)
ImportError: No module named functools32

Jupyter notebook format depends on the jsonschema package:

    https://pypi.python.org/pypi/jsonschema

Please install it first.

Yes, I've done pip install jsonschema and conda install jsonschema AND pip install functools32 and conda install functools32 from within the EECS352 environment to no avail; I arrive at an almost identical error, except this time, functools32 is replaced with _version.

I've reinstalled Anaconda, updated all its packages, created a new environment in the same way I created this one, and still I get this error. I'm using Ubuntu 15.10 32-bit. I used to be able to use this environment with no problems until roughly a week ago.

If this is a duplicate, please point me to the original; however, I haven't yet found anything that seems really relevant. The only thing that might be relevant is that this error did pop up after I modified some .conf file because I was having issues updating my computer's software using sudo apt-get upgrade. I don't recall what I had done and to which file, but if it's likely the source of this issue, I can spend some time trying to track it down. Please let me know if I should spend my time to do this, and I will.


Solution

  • I think I have a solution.

    I did may things, regenerated my env (anaconda env) from another computer where it worked, but no success.

    What I think that nailed it is upgrading jsonschema to 2.5.1

    Here are my steps from "bad" jupyter env to working jupyter env.

    Good luck and come back if it doesn't work, I will post the notebook* relevant versions.

    >conda upgrade pip
    pip:        8.1.0-py27_0  --> 8.1.1-py27_0
    setuptools: 20.2.2-py27_0 --> 20.3-py27_0 
    
    >pip install functools32
    Downloading functools32-3.2.3-2.tar.gz    
    Successfully installed functools32-3.2.3.post2
    
    >jupyter notebook
    ImportError: No module named _version
    Jupyter notebook format depends on the jsonschema package:
        https://pypi.python.org/pypi/jsonschema
    Please install it first.
    
    >pip install jsonschema
    Requirement already satisfied
    
    >pip install --upgrade jsonschema
    Collecting jsonschema
    Downloading jsonschema-2.5.1-py2.py3-none-any.whl
    Successfully uninstalled jsonschema-2.4.0
    Successfully installed jsonschema-2.5.1
    
    >jupyter notebook
    [I 16:45:41.708 NotebookApp] Writing notebook server cookie secret to 
    [I 16:45:42.134 NotebookApp] Serving notebooks from local directory: 
    [I 16:45:42.134 NotebookApp] 0 active kernels 
    [I 16:45:42.134 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/