[Distutils] Bug in setuptools-0.6a11-py2.4 ?

Phillip J. Eby pje at telecommunity.com
Thu Jun 8 03:31:18 CEST 2006


At 04:31 PM 6/7/2006 -0600, Uche Ogbuji wrote:
>Based on the projects I see in my Python src directory, it is indeed
>common.  Sometime the code dir is called "lib", sometimes "src", and
>occasionally something else.  I guess we just seem to use a disjoint set
>of Python packages.

But that's not the same thing at all.  The common layout in such a case is 
to have

     package_dir = {'':'src'}  # or 'lib'

and that is quite a different layout from what you're doing.

I would be very curious to see what packages are doing as you are; at the 
moment I know of one that actually uses a {'foo':''} convention (which has 
similar problems), and I think I've seen one other besides yours that uses 
{'foo':'lib'}.

But to my knowledge, the majority of 'src' and 'lib' dirs out there are 
following the {'':'src'} or {'':'lib'} convention in setup.py, not the 
{'foo':'lib'} one.


> > user confusion in understanding the layout,
>
>Again I don't see your point.  Why do you think a user would be
>confused?  This is the first I've heard such a claim in a long time
>managing project layouts.

Because there is no directory with the package's name, so simple browsing 
of the directory layout will not tell you what packages are in it.  The 
src/ or lib/ prefix isn't the obstacle, it's the absence of disambiguating 
information.


> > Actually, setuptools only mentions creating a *parent* package, e.g.
> > package_dir={'':'lib'}, where the 'amara' package directory would then
> > be a subdirectory of lib.
>
>That's true.  But to me the fact that it's a prominent pattern in base
>distutils docs

I'd dispute that, as the distutils docs themselves *literally* describe the 
layout with packages in the setup.py directory as being the "most 
obvious".  See:

    http://python.org/doc/2.4.1/dist/listing-packages.html

The {'':'lib'} pattern is listed as "a different convention", and the 
{'foo':'lib'} option is listed last, as "another possible convention" -- 
hardly a stellar recommendation.  :)

Setuptools supports it, of course, because there *are* packages in the wild 
that use it.  Nonetheless, I won't pass up an opportunity to encourage 
people to use the "most obvious" approach instead.  :)  I'm personally 
migrating away from the habit of using the {'':'src'} convention myself.


>I'm just happy that it looks as if I'll be able to provide
>setuptools-enabled versions of 4Suite and Amara soonish.

I'm glad it's working for you.  Please don't let any of this discourage you 
from reporting bugs; I'm just as happy when a reported bug can be 
considered fixed without actually making any code changes.  ;-)



More information about the Distutils-SIG mailing list