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.