[Python-Dev] Draft PEP: "Simplified Package Layout and Partitioning"
Glenn Linderman
v+python at g.nevcal.com
Thu Jul 21 01:39:35 CEST 2011
On 7/20/2011 4:03 PM, P.J. Eby wrote:
> I'd recommend *always* using it, outside of simple startup code.
So that is a burden on every program. Documentation would help, but it
certainly makes updating sys.path much more complex -- 3 lines (counting
import of pkgutil) instead of one, and the complexity of understanding
why there is a need for it, when in simple cases the single line works
fine, but it would be bug prone to have both ways.
>
>> So I am still left with my original question:
>>
>>>> Is there some way to create a new __path__ that would reflect the
>>>> fact that it has been dynamically created, rather than set from
>>>> __init__.py, and then when it is referenced, calculate (and cache?)
>>>> a new value of __path__ to actually search?
>
> Hm. Yes, there is a way to do something like that, but it would
> complicate things a bit
From what you said, it would complicate the solution for complex
packaging tasks, but would return simple extensions of sys.path to being
simple again. Sounds like a good tradeoff, but I'll leave that to you
and other more knowledgeable people to figure out the details and
implementation... I snipped the explanation, because it is beyond my
present knowledge base.
> Anyway, it seems worth considering. We just need to sort out what the
> downsides are for any current tools thinking that such modules aren't
> packages. (But hey, at least it'll be consistent with what such tools
> would think of the on-disk representation! That is, a tool that
> thinks foo.py alongside a foo/ subdirectory is just a module with no
> package, will also think that 'foo', once imported, is a module with
> no package.)
Please consider it. I think your initial proposal solves some problems,
but a version that doesn't complicate the normal, simple, extension of
sys.path would be a much better solution, so I am happy to hear that you
have ideas in that regard. Hopefully, they don't complicate things too
much more. So far, I haven't gotten my head around packages as they
presently exist (this __init__.py stuff seems much more complex than the
simplicity of Perl imports that I was used to, although I certainly like
many things about Python better than Perl, and have switched
whole-heartedly, although I still have a fair bit of Perl code to port
in the fullness of time). I think your proposal here, although
maintaining some amount of backward-compatibility may require complexity
of implementation, can simplify the requirements for creating new
packages, to the extent I understand it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20110720/d28ac334/attachment.html>
More information about the Python-Dev
mailing list