Tried creating and installing needed packages into a virtual python environment, but Jupyter notebook would still throw Module not found errors, even after pip
, pip3
on base installation, as well as pip
, pip3
install method into the virtual environment.
conda create -n my-conda-env # creates new virtual env
source activate my-conda-env # activate environment in terminal
conda install jupyter # install jupyter + notebook
jupyter notebook # start server + kernel
To solve, in jupyter notebook, run:
import sys
print(sys.executable)
Use the path to install the package via terminal
/usr/local/Cellar/jupyterlab/3.0.14/libexec/bin/python3.9 -m pip install pandas
Add your virtual environment as Python kernel in this way (Make sure it's activated):
(venv) $ ipython kernel install --name "local-venv-kernel" --user
Now, you can select the created kernel "local-venv-kernel" when you start Jupyter notebook or lab.
You could check the installed libraries using this code in a notebook cell:
!pip freeze
- need to look further into how to target and select
which jupyter
If you have a non-conda pip as your default pip but conda python is your default python (as below)
>which -a pip
/home/<user>/.local/bin/pip
/home/<user>/.conda/envs/newenv/bin/pip
/usr/bin/pip
>which -a python
/home/<user>/.conda/envs/newenv/bin/python
/usr/bin/python
Then instead of just calling pip install <package>
, you can use the module flag -m
with python so that it uses the anaconda python for the installation
python -m pip install <package>
This installs the package to the anaconda library directory rather than to the library directory associated with (the non-anaconda) pip
EDIT: The reason this works is as follows: the command pip
references a specific pip file/shortcut (which -a pip
tells you which one). Similarly, the command python
references a specific python file (which -a python
tells you which one). For one reason or another these two commands can become unsynchronized, so that your 'default' pip is in a different folder than your default python, and therefore is associated with a different version of python.
In contrast, the python -m pip
construction does not use the shortcut that the pip
command points to. Instead, it asks python to find its version of pip and use that version to install a package.
Thanks for the note, work for me.