[Python-Dev] Fix import errors to have data
Tim Peters
tim.peters at gmail.com
Wed Jul 28 04:40:45 CEST 2004
[Delaney, Timothy C (Timothy)]
> OK - the problem as I see it is that a given module that exists, but
> raises ImportError, only raises ImportError *once*, whereas it really
> should raise ImportError every time
Jim's after something different, while the problem you're thinking
about is more general than just ImportError. When an import of an
existing module fails for *any* reason, subsequent attempts to import
the same module succeed. For example,
C:\Code>type a.py
1/0
C:\Code>\python23\python.exe
Python 2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import a
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "a.py", line 1, in ?
1/0
ZeroDivisionError: integer division or modulo by zero
>>> import a
>>>
This is Bad, because an uncaught exception in module initialization
means the module probably can't fulfill its contract, yet subsequent
importers get no clue that the module is in a damaged state (until the
module fails to do its job, which may or may not be obvious when it
occurs). A module failing to import because it suffers an ImportError
itself is once instance of this, but the same applies to a module
failing to import for any other reason: in all these cases,
subsequent imports don't get the exception the initial importer saw,
they get a module object in an arbitrarily screwed-up state.
More information about the Python-Dev
mailing list