I've got the following setup.py:
import itertools
dependencies = {
  'minimal': ['numpy', 'requests'],
  'option-a': ['scipy'],
  'option-b': ['matplotlib']
}
setup(
  install_requires=dependencies['minimal'],                           # minimal dependencies
  extras_require={
      'all': list(itertools.chain(*dependencies.values())),           # all dependencies included
      **{k: v for k, v in dependencies.items() if k != 'minimal'},    # each extra dependency group
  },
  # other setup parameters omitted
)
I used a variable dependencies to avoid duplicating lists of dependencies and to make it easy to maintain. It seems like a good approach.
I'd like to write a function verify_optional_extras('option-a') which will check if the packages for the option-a extras were installed.
If I could access the dependencies variable defined in setup.py I could easily write a verification function for those packages.
Possible answers to this question:
- Show me how to access dependenciesinsetup.py.
- Tell me a better way to organize optional dependencies.
 
     
    