Reputation: 648
I'm trying to use scipy in a jupyter notebook and it says I have it installed, but when I try to import it, it gives me the following error.
Any help would be great. thank you.
Upvotes: 5
Views: 21048
Reputation: 86328
TLDR: try this
import sys
!{sys.executable} -m pip install scipy
A bit more info:
Jupyter notebooks are able to work with multiple kernels, which are essentially pointers to the Python (or other language) executable that the notebook uses. In a Python kernel, you can figure out which one is being used by typing
import sys
print(sys.executable)
When you run a bash command in the notebook, like !pip install scipy
, that uses the bash environment that was active when you launched the notebook which is not necessarily associated with the Python kernel you are using. That means that it may be installing scipy in a different Python location. You can figure out which Python your shell points to by running !which python
. If this doesn't match, then !pip install
will not be installing in the right place.
You can fix this by explicitly telling the bash prompt which Python/pip you want to use. For example, this should do the trick:
import sys
!{sys.executable} -m pip install scipy
This runs the pip version associated with your executable, and installs scipy with that. For some more details on what's happening behind the scenes, check out this answer.
Upvotes: 15
Reputation: 7293
The pip that you execute is using a shell that may (and that is probably the case here) have a different python interpreter than the one of the jupyter notebook!
Jake VanderPlas to the rescue https://twitter.com/jakevdp/status/841791667472543745 Do the following in the notebook
import sys
sys.executable
Depending on the output of "sys.executable", adjust your command-line call, still in the notebook
!/usr/bin/python3 -m pip install scipy
But as you have scipy installed, the issue is to understand why your anaconda scipy is not found. Do you have a default virtualenv for all your python use? How do you start the notebook?
Upvotes: 2