Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using cfgrib with xarray.open_dataset fails due to "'EntryPoint' object has no attribute 'module_name'" AttributeError #314

Open
joshdorrington opened this issue Sep 23, 2022 · 2 comments

Comments

@joshdorrington
Copy link

Versions and dependencies

I have installed cfgrib using mamba. I have checked that cfgrib is installed correctly:

>>python -m cfgrib selfcheck
Found: ecCodes v2.26.0.
Your system is ready.

and I have retrieved the test grib file using wget.

>>import xarray as xr
>>import sys

>>print(sys.version)
3.9.10 | packaged by conda-forge | (main, Feb  1 2022, 21:24:11) 
[GCC 9.4.0]

>>print(xr.__version__)
0.20.1

Nature of Error
When I run:
xr.open_dataset('era5-levels-members.grib',engine='cfgrib')

I receive an error (posted in full at the bottom) which seems to derive from this object:
EntryPoint(name='cfgrib', value='cfgrib.xarray_plugin:CfGribBackend', group='xarray.backends')
having no attribute 'module_name', which occurs at the bottom of the following stacktrace:

xr.open_dataset->plugins.get_backend(engine)->list_engines()->build_engines(entrypoints)->remove_duplicates(entrypoints)

I would appreciate any assistance in getting this working!

Full error message:

AttributeError                            Traceback (most recent call last)
/tmp/ipykernel_23372/811187540.py in <module>
      4 
      5 get_ipython().run_line_magic('debug', '')
----> 6 xr.open_dataset('era5-levels-members.grib',engine='cfgrib')

~/miniconda3/lib/python3.9/site-packages/xarray/backends/api.py in open_dataset(filename_or_obj, engine, chunks, cache, decode_cf, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, drop_variables, backend_kwargs, *args, **kwargs)
    479         engine = plugins.guess_engine(filename_or_obj)
    480 
--> 481     backend = plugins.get_backend(engine)
    482 
    483     decoders = _resolve_decoders_kwargs(

~/miniconda3/lib/python3.9/site-packages/xarray/backends/plugins.py in get_backend(engine)
    156     """Select open_dataset method based on current engine."""
    157     if isinstance(engine, str):
--> 158         engines = list_engines()
    159         if engine not in engines:
    160             raise ValueError(

~/miniconda3/lib/python3.9/site-packages/xarray/backends/plugins.py in list_engines()
    101 def list_engines():
    102     entrypoints = entry_points().get("xarray.backends", ())
--> 103     return build_engines(entrypoints)
    104 
    105 

~/miniconda3/lib/python3.9/site-packages/xarray/backends/plugins.py in build_engines(entrypoints)
     90         if backend.available:
     91             backend_entrypoints[backend_name] = backend
---> 92     entrypoints = remove_duplicates(entrypoints)
     93     external_backend_entrypoints = backends_dict_from_pkg(entrypoints)
     94     backend_entrypoints.update(external_backend_entrypoints)

~/miniconda3/lib/python3.9/site-packages/xarray/backends/plugins.py in remove_duplicates(entrypoints)
     27         matches_len = len(matches)
     28         if matches_len > 1:
---> 29             selected_module_name = matches[0].module_name
     30             all_module_names = [e.module_name for e in matches]
     31             warnings.warn(

AttributeError: 'EntryPoint' object has no attribute 'module_name'
@iainrussell
Copy link
Member

Hi @joshdorrington,

I've just installed cfgrib into a mamba environment and it worked ok for me. I think it's worth double-checking that everything is installed where you think it is, e.g. that cfgrib is installed into the same environment that xarray is installed into.

Best regards,
Iain

@headtr1ck
Copy link
Contributor

This has been fixed 1 year ago in xarray: pydata/xarray#5959
Consider updating xarray.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants