[Distutils] Adding a sub-command to the setup.py "build" and "develop" commands

P.J. Eby pje at telecommunity.com
Fri Mar 13 06:38:28 CET 2009

At 02:17 AM 3/13/2009 +0100, Brian Sutherland wrote:

>     http://pypi.python.org/pypi/van.potomo/
>However, one major problem is that to modify the function of the
>setup.py "build" and "develop" commands one needs to do this in the
>     from setuptools import setup, find_packages
>     from van.potomo import develop, build
>     setup(
>         name = "HelloWorld",
>         cmdclass = {'build': build,
>                     'develop': develop},
>         setup_requires = ["van.potomo"],
>         version = "0.1",
>         packages = find_packages(),
>         )
>Meaning that you have to manually install van.potomo before tools like
>buildout can run the setup.py to figure out the dependencies. Is there
>any way to make that more automatic, especially so that buildout can
>have a chance?
> >From my experience with Debian, there's a "Build Dependencies" field in
>the control file where one can specify such things. I'm kindof hoping
>there's a setuptools equivalent?

You can use aliases to do this, sort of.  In your setup.cfg, do something like:

build = vp_build
develop = vp_develop

And then register these commands in the van.potomo package's entry 
points (i.e., as vp_build and vp_develop).

Unfortunately, this only works for *command-line commands* - it's not 
a general replacement for the commands, the way cmdclass is.

Probably a better solution would be to add the ability in setuptools 
to specify a *string* in cmdclass, instead of a class, so that this 
approach could work generally, instead of only on the command line.

More information about the Distutils-SIG mailing list