[Python-Dev] Some comments on PEP 328 (absolute/relative imports)
Aahz
aahz at pythoncraft.com
Tue Apr 6 10:16:15 EDT 2004
On Tue, Apr 06, 2004, Barry Warsaw wrote:
> On Sat, 2004-04-03 at 13:24, Bernhard Herzog wrote:
>>
>> I don't think this is a good description of the actual problem. The
>> problem is that the modules in the package shadow global ones and
>> there's no easy way to bypass the local package. FWIW, though, I don't
>> recall ever running into a problem with that.
>
> It happens, and it makes for tricky choices. I know to stay away from
> internal modules like re and email, but as the standard library gets
> fatter, there's more chance of collision. The only remedy will be to
> rename an internal module when I find that I suddenly want to use some
> new standard module. There should be more independence.
Thanks! Here's my rewrite; comments, anyone?
Rationale for Absolute Imports
==============================
In Python 2.3 and earlier, if you're reading a module located inside a
package, it is not clear whether ::
import foo
refers to a top-level module or to another module inside the package.
As Python's library expands, more and more old modules suddenly shadow
builtin modules by accident. It's a particularly difficult problem
inside packages because there's no way to specify which module is meant.
To resolve the ambiguity, it is proposed that ``foo`` will always be a
module or package reachable from ``sys.path``. This is called an
absolute import.
The python-dev community chose absolute imports as the default because
they're the more common use case and because absolute imports can provide
all the functionality of relative (intra-package) imports -- albeit at
the cost of difficulty when renaming package pieces higher up in the
hierarchy or when moving one package inside another.
--
Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/
Why is this newsgroup different from all other newsgroups?
More information about the Python-Dev
mailing list