amueller / introduction_to_ml_with_python

Notebooks and code for the book "Introduction to Machine Learning with Python"
7.45k stars 4.57k forks source link

mglearn: Can't import and then get a "zsh:1: no matches found:" error #140

Closed jpanknin closed 4 years ago

jpanknin commented 4 years ago
  1. I've installed mglearn in the command line using "pip install mglearn"
  2. I've also installed it inside the Jupyter notebook using "!pip install mglearn"

But when I import I get a "ModuleNotFoundError: No module named 'mglearn'"

Then I tried to install it inside the Jupyter notebook using the "import sys" and then "!{sys.executable} -m pip install mglearn" method from the site you recommended (https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/)

When I use the method recommended in the article I get a "zsh:1: no matches found:" error

If I enter "python3" in the terminal, then import mglearn it works fine. I have mglearn.version 0.1.7 and scipy version 1.3.0.

I'm out of ideas and resources on Stackoverflow. Any suggestions on a fix?

amueller commented 4 years ago

Thanks for opening the issue. Can you say what sys.executable is? It looks like the python executable that corresponds to the jupyter kernel is not found.

jpanknin commented 4 years ago

Yes, I think that's the problem too.

which python3 shows .../anaconda/bin/python3

and

print(sys.executable) shows hands_on_ml/my_env/bin/python3

So it is coming from different places, I just have no idea how to fix. And I have no idea why my Jupyter is coming from inside a virtual environment.

amueller commented 4 years ago

Hm that should be fine though. Maybe the hands_on_ml/my_env/bin/python3 being a relative path is an issue? Are you on linux or OS X?

jpanknin commented 4 years ago

OS X. Mojave 10.14.6

Maybe the relative path, but I have no issues with any other libraries. I can import sklearn, pandas, numpy, etc. with no problems.

amueller commented 4 years ago

Sorry I was referring to the !{sys.executable} bit. Certainly your python3 is a different environment from what's running in the notebook. The question was why you can't execute the pip that belongs to that environment. Are you using conda? In that case you might be able to run conda activate my_env and then do the pip install mglearn there.

jpanknin commented 4 years ago

I've tried opening the notebook directly from the directory and also from inside Anaconda-Navigator. Same problem. I also tried !conda install mglearn and got the following error:

Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve. Collecting package metadata (repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

Current channels:

To search for alternate channels that may provide the conda package you're looking for, navigate to

https://anaconda.org

and use the search bar at the top of the page.

amueller commented 4 years ago

Yes, there is no conda package. Conda packages are sort-of orthogonal to the conda environments. Can you do conda env list to list your conda environments? It looks like you have an environment called my_env that is used in jupyter. If so, you can run

conda activate my_env
pip install mglearn

and it will fix your issue.

jpanknin commented 4 years ago

Not sure I did this correctly, but in the terminal I tried conda env list and got the following:

conda env list [17:50:18]

conda environments:

# base * /Users/jpanknin/anaconda3 dsfs /Users/jpanknin/anaconda3/envs/dsfs

Also tried it inside the Jupyter notebook with !conda env list and got the exact same thing.

The conda activate my_env gave me the following error:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run

$ conda init <SHELL_NAME>

Currently supported shells are:

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

amueller commented 4 years ago

Well looks like you might have multiple installations of anaconda on your machine? You can try following the commands to set up the conda environment correctly but there's no my_env environment listed in conda env list so I don't know where the hands_on_ml/my_env/bin/python3 comes from.

It's hard to debug this without knowing how exactly you set up these environments.

jpanknin commented 4 years ago

Think I got it fixed. You were right. I had 2 different installs of anaconda in different places. I finally had to get a tech from Anaconda on the phone for an hour to troubleshoot, but it's all working now. Appreciate your help, Andreas.

amueller commented 4 years ago

glad you figured it out!