Issue 11552: Confusing error message when hook module cannot be loaded (original) (raw)

The following simple example:

setup.cfg

[global] setup_hook = hooks.foo

and the following hooks.py file

def foo(content): pass

Traceback (most recent call last): File "../distutils2/distutils2/pysetup", line 5, in main() File "/Users/david/src/projects/distutils2/distutils2/run.py", line 486, in main return dispatcher() File "/Users/david/src/projects/distutils2/distutils2/run.py", line 477, in call return func(self, self.args) File "/Users/david/src/projects/distutils2/distutils2/run.py", line 161, in _run dist.parse_config_files() File "/Users/david/src/projects/distutils2/distutils2/dist.py", line 317, in parse_config_files return self.config.parse_config_files(filenames) File "/Users/david/src/projects/distutils2/distutils2/config.py", line 258, in parse_config_files self._read_setup_cfg(parser, filename) File "/Users/david/src/projects/distutils2/distutils2/config.py", line 120, in _read_setup_cfg self.setup_hook = resolve_name(setup_hook) File "/Users/david/src/projects/distutils2/distutils2/util.py", line 644, in resolve_name raise ImportError(exc) ImportError: 'str' object has no attribute 'foo'

I don't understand how it works exactly, but the current code cannot work, as ret needs to be a module package after the import (i.e. the codepath following line 632 and later in util.py (resolve_name function))