[Distutils] packages and modules together
M.-A. Lemburg
mal@lemburg.com
Thu Feb 27 16:25:34 2003
Fred L. Drake, Jr. wrote:
> Here's a topic that's come up before.
>
> Distutils does not currently support having both packages and modules
> in the same call to distutils.core.setup(). While this is probably
> fine for many projects, others have been bitten by it; Anthony Baxter
> asked about this just last month:
>
> http://mail.python.org/pipermail/distutils-sig/2003-January/003151.html
>
> We're increasingly using distutils with Zope, and would like to make
> our use of it as "clean" as possible. The current setup script I'm
> working with has to call distutils.core.setup() three times, which is
> just too many for me. Some of this can probably be improved by
> adjusting more of the provided knobs more carefully, but the simple
> use of both modules and packages seems like aviodable pain.
>
> Is there any reason not to support both in the distutils core
> directly? While the limitation can be worked around, it seems
> gratuitous, and shouldn't need the extra machinations.
This seems to be related to some design decision in build_py.py
which is not clear at all:
# Two options control which modules will be installed: 'packages'
# and 'py_modules'. The former lets us work with whole packages, not
# specifying individual modules at all; the latter is for
# specifying modules one-at-a-time. Currently they are mutually
# exclusive: you can define one or the other (or neither), but not
# both. It remains to be seen how limiting this is.
# Dispose of the two "unusual" cases first: no pure Python modules
# at all (no problem, just return silently), and over-specified
# 'packages' and 'py_modules' options.
if not self.py_modules and not self.packages:
return
if self.py_modules and self.packages:
raise DistutilsOptionError, \
"build_py: supplying both 'packages' and 'py_modules' " + \
"options is not allowed"
# Now we're down to two cases: 'py_modules' only and 'packages' only.
if self.py_modules:
self.build_modules()
else:
self.build_packages()
I believe that a simple change to the .find_all_modules()
method would solve the problem: the method would need to merge
the two generated lists (from py_modules and the modules from
the packages).
--
Marc-Andre Lemburg
eGenix.com
Professional Python Software directly from the Source (#1, Feb 27 2003)
>>> Python/Zope Products & Consulting ... http://www.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
Python UK 2003, Oxford: 33 days left
EuroPython 2003, Charleroi, Belgium: 117 days left