[Python-Dev] Re: Fix import errors to have data
Casey Duncan
casey at zope.com
Tue Jul 27 19:17:54 CEST 2004
On Tue, 27 Jul 2004 12:39:22 -0400
Jim Fulton <jim at zope.com> wrote:
> Tim Peters wrote:
> > [Jim Fulton]
> > ...
> >
> >>No, it won't. For example, suppose foo imports B. B tries to import
> >>C, but fails. B is now broken, but it is still importable.
> >Actually,>both foo and B can be imported without errors, even though
> >they are>broken.
> >
> >
> > Then you're proposing a way for a highly knowledgable user to
> > anticipate, and partially worm around, that Python leaves behind
> > insane module objects in sys.modules.
>
> No. I'm proposing a way for a Python developer to detect the
> presence or absence of a module.
>
> Hm, perhaps it would be better to provide an API (if there isn't one
> already) to test whether a module is present.
If such an api were to exist, what question exactly would it answer?
1. That there is a module by a particular name that could possibly be
imported, but the import may not succeed when actually tried.
2. There is a module by a particular name which can be imported and the
import will not
fail.
I would vote for the former, but it might be surprising to run into
behavior like this:
>>> sys.hasmodule('foo')
True
>>> import foo
ImportError: foo blew
What if there was a new exception ModuleNotFoundError which subclassed
ImportError. This would be raised by the import machinery when the
module could not be found. Errors during import would continue to raise
a standard ImportError.
I think this, coupled with Jim's original suggestion and Tim's to
prevent broken modules being retained in os.modules would help a lot.
-Casey
More information about the Python-Dev
mailing list