Please prompt me how to pass a user-defined parameter both from the command line and setup.cfg configuration file to distutils\' setup.py script. I want to write a setup.py
As Setuptools/Distuils are horribly documented, I had problems finding the answer to this myself. But eventually I stumbled across this example. Also, this similar question was helpful. Basically, a custom command with an option would look like:
from distutils.core import setup, Command
class InstallCommand(Command):
description = "Installs the foo."
user_options = [
('foo=', None, 'Specify the foo to bar.'),
]
def initialize_options(self):
self.foo = None
def finalize_options(self):
assert self.foo in (None, 'myFoo', 'myFoo2'), 'Invalid foo!'
def run(self):
install_all_the_things()
setup(
...,
cmdclass={
'install': InstallCommand,
}
)
You can't really pass custom parameters to the script. However the following things are possible and could solve your problem:
--with-featurename
, standard features can be disabled using --without-featurename
. [AFAIR this requires setuptools]set
on windows whereas prefixing them works on linux/ OS X (FOO=bar python setup.py
).cmd_class
es which can implement new features. They are also chainable, so you can use that to change variables in your script. (python setup.py foo install
) will execute the foo
command before it executes install
.Hope that helps somehow. Generally speaking I would suggest providing a bit more information what exactly your extra parameter should do, maybe there is a better solution available.