sunpy: Using sunpy.map shouldn't require remote access libraries (e.g. aiohttp)

I am trying to create a frozen and minimal python environment for some code I run daily to output synoptic maps and magnetic connection predictions. Installing dependencies is fine - I can just use pip install --no-deps to ignore sunpy’s (extensive) list of dependencies that I don’t actually need.

Doing import sunpy.map however reveals a dependency on aiohttp that I don’t really want to have to install however. I am wondering if there is a way to remove this runtime dependency?

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    import pfsspy
  File "/Users/dstansby/miniconda3/envs/connection/lib/python3.8/site-packages/pfsspy/__init__.py", line 13, in <module>
    import sunpy.map
  File "/Users/dstansby/miniconda3/envs/connection/lib/python3.8/site-packages/sunpy/map/__init__.py", line 8, in <module>
    from sunpy.map import sources
  File "/Users/dstansby/miniconda3/envs/connection/lib/python3.8/site-packages/sunpy/map/sources/__init__.py", line 12, in <module>
    from ..map_factory import Map
  File "/Users/dstansby/miniconda3/envs/connection/lib/python3.8/site-packages/sunpy/map/map_factory.py", line 14, in <module>
    from sunpy.data import cache
  File "/Users/dstansby/miniconda3/envs/connection/lib/python3.8/site-packages/sunpy/data/__init__.py", line 5, in <module>
    from sunpy.data._sample import download_sample_data
  File "/Users/dstansby/miniconda3/envs/connection/lib/python3.8/site-packages/sunpy/data/_sample.py", line 7, in <module>
    from sunpy.util.parfive_helpers import Downloader
  File "/Users/dstansby/miniconda3/envs/connection/lib/python3.8/site-packages/sunpy/util/parfive_helpers.py", line 4, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 20 (20 by maintainers)

Most upvoted comments

I think this counts as a bug.

Making from sunpy.data import cache not trigger the sample data should the angle here, someone will have to work out that init path and change it.