adamerose / PandasGUI

A GUI for Pandas DataFrames
MIT No Attribution
3.15k stars 225 forks source link

Get error: module 'bokeh.plotting' has no attribute 'Figure' #230

Open raodan218 opened 1 year ago

raodan218 commented 1 year ago

PLEASE FILL OUT THE TEMPLATE

Describe the bug

Using pandasgui in my code to show DataFrame as following:

import pandas as pd
import pandasgui

# ignore how to get df
df = pd.DataFrame(...)
pandasgui.show(df)

Get error: module 'bokeh.plotting' has no attribute 'Figure'. Did you mean: 'figure'

Environment OS: Windows 10 Python: 3.10 IDE: VS Code

Package versions

ipython==8.10.0
ipython-genutils==0.2.0
pandasgui==0.2.14
plotly==5.10.0
PyQt5==5.15.9
PyQt5-sip==12.12.1
PyQtWebEngine==5.15.6
bokeh==3.1.1

In source file utility.py:446, following code:

        import bokeh.plotting
        if issubclass(type(fig), bokeh.plotting.Figure):
            return "bokeh"

Change 'bokeh.plotting.Figure' to 'bokeh.plotting.figure' (Figure to lower case) Everything is OK

jj-github-jj commented 1 year ago

same problem here . looks like migration guide fro bokeh https://github.com/bokeh/bokeh/wiki/Migration-Guides says Figure has been removed the code could look for either Figure or figure for compatibility with Bokeh pre 3.0 and post 3.0

Bokeh document Removals bokeh.server.django was moved to a separate project bokeh_django, which should be a drop-in replacement in most cases. bokeh_django was also updated to work with Django 3.x and 4.x.

Figure

The duplicative attribute Figure (capital-F) was removed from bokeh.plotting. Use bokeh.plotting.figure (lowercase-f) instead.

Baehrl commented 10 months ago

Same problem and error message here. Unfortunately, I have no write access to change the utility.py file. It can still be solved with downgrading bokeh to version 2.4.3 or 2.4.2. However, my problem is that this is incompatible with dask, which needs for its dashboard verion >3.0*

stephantamminga commented 7 months ago

I submitted this Pull Request to fix it.

Edit: the pull request was just merged.