Relative Imports, why the hell is it so hard?
Terry Reedy
tjreedy at udel.edu
Tue Mar 31 14:50:14 EDT 2009
Kay Schluehr wrote:
> On 31 Mrz., 18:48, s4g <rafals... at gmail.com> wrote:
> This and similar solutions ( see Istvan Alberts ) point me to a
> fundamental problem of the current import architecture. Suppose you
> really want to run a module as a script without a prior import from a
> module path:
>
> ...A\B\C> python my_module.py
>
> then the current working directory C is added to sys.path which means
> that the module finder searches in C but C isn't a known package.
> There is no C package in sys.modules even if the C directory is
> "declared" as a package by placing an __init__.py file in it. Same
> goes of course with B and A.
Nothing is added to sys.modules, except the __main__ module, unless
imported (which so are on startup).
> Although the ceremony has been performed
> basically correct the interpreter god is not pacified and doesn't
> respond.
But the import 'ceremony' has not been performed.
> But why not? Because it looks up for *living* imported
> packages in the module cache ( in sys.modules ).
>
> I don't think there is any particular design idea behind it. The
> module cache is just a simple flat dictionary; a no-brainer to
> implement and efficient for look ups.
This all dates to the time before packages and imports from zip files
and such.
> But it counteracts a domain model.
What is that?
> All you are left with is those Finders, Loaders and Importers
> in Brett Cannons importlib. Everything remains deeply mysterious and I
> don't wonder that it took long for him to work this out.
And your proposal is?
tjr
More information about the Python-list
mailing list