Indeed, the first try-except and passing around `globals()` can be avoided altogether by passing to `_construct_argparser` the methods themselves, rather than their names. 
(No idea why I made it more complicated than it actually needs to be.) Can you have a look at https://github.com/ev-br/scipy/commit/7840023b5bd4bd7e0f63a5f757b41f448fe69ad3? I tried sending a PR against your PR but I don't seem to be able to figure out how to do it.