[Distutils] setup.py should use if __name__ == '__main__', right?

Carl Meyer carl at oddbird.net
Mon Apr 7 20:36:51 CEST 2014


On 04/06/2014 09:04 PM, Asheesh Laroia wrote:
> Hi nice distutils/PyPA people,
> 
> I had a question that probably is worth showing up in the archives. Namely:
> 
> It seems to me like bizarre bad form for the setup.py file to execute
> what amounts to a main() function at import time.
> 
> I presume this is just some kind of historical accident, and if the
> early authors of the distutils docs were careful, they'd have recommended:
> 
> from distutils.core import setup
> 
> if __name__ == '__main__':
>     setup()  # FIXME args
> 
> 
> rather than just:
> 
> from distutils.core import setup
> 
> setup()  # FIXME args
> 
> 
> 
> Is that an accurate assessment? If so, that's great, because I plan to
> remark on this bemusedly in my talk. If there is a reason it is the way
> it is, however, then I will avoid making a joke that is wrong in an
> important way.

I don't think there's anything wrong with guarding the 'setup()' call
with an 'if __name__ == "__main__"' (I have seen it done once or twice,
and wouldn't object to someone advocating for it), but it isn't common
practice, mostly because as Noah says there isn't any use case for
importing setup.py, so in this particular instance it's un-useful
boilerplate.

Carl


More information about the Distutils-SIG mailing list