Search code examples
pandasjupyter-notebookjupyteripywidgetspandas-profiling

ImportError: IProgress not found. Please update jupyter and ipywidgets although it is installed


I am using jupyter notebook and installed.

ipywidgets==7.4.2 widgetsnbextension pandas-profiling=='.0.0

and also I ran:

!jupyter nbextension enable --py widgetsnbextension

but when running:

from pandas_profiling import ProfileReport
profile = ProfileReport(df, title="Pandas Profiling Report", explorative=True)
profile.to_widgets()

I get the error:

ImportError: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html

Any idea why? Tried proposed solutions.


Solution

  • I tried everything you mentioned in a new environment using conda and I had another issue related to the version of ipywidgets (a bug found in Github with comments saying that got solved after using last version). I solved the problem I had installing last version of ipywidgets. Here is my process:

    1. Create a new environment using conda (I use miniconda):
    conda create --name teststackoverflow python=3.7
    
    1. Activate new environment:
    conda activate teststackoverflow
    
    1. Install jupyter:
    pip install jupyter
    
    1. Install all the libraries without specific versions to get the last ones:
    pip install ipywidgets widgetsnbextension pandas-profiling
    
    1. Run jupyter notebook in the console to turn on the notebooks server and create a new notebook.
    2. Run this line in a new cell:
    !jupyter nbextension enable --py widgetsnbextension
    

    With the result:

    Enabling notebook extension jupyter-js-widgets/extension...
          - Validating: OK
    
    1. Run some sample code to define df:
    import pandas as pd
    df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [1, 2, 3, 4]})
    
    1. Run the code you provided:
    from pandas_profiling import ProfileReport
    profile = ProfileReport(df, title="Pandas Profiling Report", explorative=True)
    profile.to_widgets()
    

    Final output looks good: Final result of running step number 8