Getting "AttributeError: module 'shapely.geos' has no attribute 'lgeos'"

Question:

I am trying to do this exercise from momepy (https://github.com/pysal/momepy/blob/main/docs/user_guide/getting_started.ipynb), but on the third codeblock

f, ax = plt.subplots(figsize=(10, 10))
buildings.plot(ax=ax)
ax.set_axis_off()
plt.show()

I got the following error

AttributeError                            Traceback (most recent call last)
Cell In[12], line 5
      1 buildings = gpd.read_file(momepy.datasets.get_path('bubenec'),
      2                           layer='buildings')
      4 f, ax = plt.subplots(figsize=(10, 10))
----> 5 buildings.plot(ax=ax)
      6 ax.set_axis_off()
      7 plt.show()

File ~/miniconda3/envs/testbed/lib/python3.10/site-packages/geopandas/plotting.py:925, in GeoplotAccessor.__call__(self, *args, **kwargs)
    923 kind = kwargs.pop("kind", "geo")
    924 if kind == "geo":
--> 925     return plot_dataframe(data, *args, **kwargs)
    926 if kind in self._pandas_kinds:
    927     # Access pandas plots
    928     return PlotAccessor(data)(kind=kind, **kwargs)

File ~/miniconda3/envs/testbed/lib/python3.10/site-packages/geopandas/plotting.py:689, in plot_dataframe(df, column, cmap, color, ax, cax, categorical, legend, scheme, k, vmin, vmax, markersize, figsize, legend_kwds, categories, classification_kwds, missing_kwds, aspect, **style_kwds)
    686     markersize = df[markersize].values
    688 if column is None:
--> 689     return plot_series(
    690         df.geometry,
    691         cmap=cmap,
    692         color=color,
...
---> 67     geom = shapely.geos.lgeos.GEOSGeom_clone(geom._ptr)
     68     return shapely.geometry.base.geom_factory(geom)
     70 # fallback going through WKB

AttributeError: module 'shapely.geos' has no attribute 'lgeos'

Not entirely sure if I am missing a module or if there are library incompatibilities

Asked By: Reuben

||

Answers:

In the new version(2.0.0 released on 12 December 2022) of shapely there is no attribute ‘lgeos’.

Link to document:

https://pypi.org/project/Shapely/#history

You can check version by:

shapely.__version__

If you want to use lgeos in your code you can downgrade your version to 1.8.5

%pip install shapely==1.8.5

I was able to successfully import on version 1.8.5 on Jupyter.

from shapely.geos import lgeos
Answered By: God Is One