[Distutils] Re: Opening up backdoors to 'setup()'
Greg Ward
gward@python.net
Tue Aug 29 21:35:01 2000
[quoth Amos]
> So distutils.core.setup(script_name=file, script_args=commands) is the
> same as distutils.core.run_setup(file, commands)?
No. Passing 'script_name' to 'setup()' is just a "fool yourself" thing;
it doesn't actually change the script being run. It's mainly there for
completism's sake; if you can override sys.argv[1:], you ought to be
able to override sys.argv[0].
Here's a summary of what I'm thinking right now:
setup(var=value, ...)
- the traditional and usual way to invoke the Distutils
- parses sys.argv (unless you override it) and carries out
all actions implied by the command line and config files
- currently returns nothing -- not much point, because it's all about
side-effect, and the intended use is from a setup script, which is
run by an installer who doesn't give a whit about the Distribution
instance
run_setup(file, script_args=sys.argv[1:], stop_after="run")
- execfile's the setup script named by 'file'
- this causes 'setup()' to be called in the normal way, so that
a Distribution instance is created in the normal way, etc.
- but some strings are pulled behind the scenes so that we don't
necessarily run to completion
- and something -- probably the Distribution instance -- is
returned, which the caller can than query to discover the
state of the distribution (eg. metadata, contents of config
files, etc.)
> If so, is there any need for a run_setup function?
I still think so. The differences are subtle but important.
Greg
--
Greg Ward - Unix geek gward@python.net
http://starship.python.net/~gward/
"He's dead, Jim. You get his tricorder and I'll grab his wallet."