> -----Original Message----- > From: Python-Dev [mailto:python-dev- > bounces+kristjan=ccpgames....@python.org] On Behalf Of Barry Warsaw > Sent: 1. apríl 2013 22:16 > To: python-dev@python.org > Subject: Re: [Python-Dev] relative import circular problem > > On Apr 01, 2013, at 08:20 PM, Kristján Valur Jónsson wrote: > > >The relative import syntax > > > > (from foo import bar) is a getattr type of lookup (i.e. import foo, > > then get attr from it). > > > >This is in contrast with absolute import > > > > import foo.bar (get the module foo.bar from sys.modules or import > > it) > > > > bar = foo.bar > > I always thought of both syntaxes as absolute imports because they both > name the full dotted path to the module you want. This contrasts with true > PEP > 328 relative imports such as: > > from ..foo import bar > Right, the example I gave was not a relative import but an absolute one, relative imports always starting with a dot. I should have been more clear. However, relative imports can _only_ be performed using the "from X import Y syntax" (http://www.python.org/dev/peps/pep-0328/#id3) and so, when one wishes to use relative imports, the parent module must be fully initialized with the child module as an attribute. importing with the "import X.Y" does not appear to have this restriction.
> I personally dislike PEP 328 relative imports, since they seem fragile, but > that's a different discussion. Yes. I find them very useful. In our environment, we tend to write packages that then go into different places. Using relative imports allows us the freedom to move packages around and rename them, for example, make a package a sub-package of another, and do this differently for different products, while still sharing code. A package can thus refer to internals of itself, without knowing its own name, or absolute path. This is really useful. Consider this a property of Python-based "products", with a custom assembly of source code, as opposed to publicly available packages that always install into the sys.path Cheers, K _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com