[Trouble Shooting] Cannot Use Library In Jupyter Notebook
Environment
Python 3.8.4
pip 20.1.1
Problem
I installed “matblotlib” by using pip3 command on the terminal as below. I can import matplotlib on the terminal.
% pip3 install matplotlib
% python3 Python 3.8.4 (default, Jul 14 2020, 02:58:48) [Clang 11.0.3 (clang-1103.0.32.62)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import matplotlib >>>
In jupyter notebook,
import matplotlib --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-3-0484cd13f94d> in <module> ----> 1 import matplotlib ModuleNotFoundError: No module named 'matplotlib'
Check the situation
The reference path for jupyter notebook might differ from the one of host python3.
Jupyter notebook refers the python 3.8 in jupyterlab/2.2.0/libexec/lib
import sys print(sys.version) print(sys.path) 3.8.4 (default, Jul 14 2020, 02:58:48) [Clang 11.0.3 (clang-1103.0.32.62)] ['/usr/local/Cellar/jupyterlab/2.2.0/libexec/lib/python38.zip', '/usr/local/Cellar/jupyterlab/2.2.0/libexec/lib/python3.8', '/usr/local/Cellar/jupyterlab/2.2.0/libexec/lib/python3.8/lib-dynload', '/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8', '', '/usr/local/Cellar/jupyterlab/2.2.0/libexec/lib/python3.8/site-packages', '/usr/local/Cellar/jupyterlab/2.2.0/libexec/lib/python3.8/site-packages/IPython/extensions', '/Users/<username>/.ipython']
On terminal, Python3 is in /usr/local/Cellar.
>>> import sys >>> print(sys.version) >>> print(sys.path) 3.8.4 (default, Jul 14 2020, 02:58:48) [Clang 11.0.3 (clang-1103.0.32.62)] ['', '/usr/local/Cellar/python@3.8/3.8.4/Frameworks/Python.framework/Versions/3.8/lib/python38.zip', '/usr/local/Cellar/python@3.8/3.8.4/Frameworks/Python.framework/Versions/3.8/lib/python3.8', '/usr/local/Cellar/python@3.8/3.8.4/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages']
Cause
In my case, the problem caused by homebrew. Installation of Jupyter Lab or Jupyter Notebook with brew command caused the different reference to python3 as above.
We can check the list of installed items with the following command on the terminal.
% brew list autoconf ipython openssl@1.1 python@3.8 xz flake8 jupyterlab pandoc readline zeromq gdbm libyaml perl ruby gettext lua pkg-config sqlite icu4c node pyenv vim
Solution
My solutions is to uninstall jupyterlab with brew command and install it again with pip3.
% brew uninstall jupyterlab Uninstalling /usr/local/Cellar/jupyterlab/2.2.0... (7,150 files, 106.8MB) % python3 -m pip install jupyterlab Collecting jupyterlab Downloading jupyterlab-3.1.7-py3-none-any.whl (8.5 MB) |████████████████████████████████| 8.5 MB 136 kB/s ...
Start Jupyter Lab from the terminal.
% jupyter lab
I found another it could be a solution for similar problem to install ipykernel. Check ModuleNotFound Error for matplotlib for detail.