<div dir="ltr">This is kind-of related to the othe thread:<div><br></div><div>"Remove distutils, was: ..."</div><div><br><div>But more specific, so I thought I'd start a new one.</div><div><br></div><div>Here are my thoughts:</div><div><br></div><div>We had distutils -- there was a lot it didn't do that the "Masses" needed, so setuptools was born. It proved to be useful to a lot of people, and grew a large userbase....</div><div><br></div><div>But a lot was "wrong" with setuptools -- most prominently (in my mind anyway) that it put too many kind-sorta orthogonal stuff into one package: building, installing, distributing, managing version, managing dependencies, managing non-python resources, (and others??). And we didn't like how easy-install installed things :-)</div><div><br></div><div>So distribute, and pip, and wheel, and now a new backward compatible setuptools was born.<br></div><div><br></div><div>But we still have a bunch of should be orthogonal stuff tangled up together. In particular, I find that I often find easy-install getting invoked when I don't want ot to, and I get those darn eggs scattered all over the place, and easy_install.pth, and ????</div><div><br></div><div>I think if I am really careful about what I invoke when, this could be avoided, but the reality is that I've been dealing with this for years, and am trying desperately to do things the "right, modern" way, and I still get ugliness. I seriously doubt that I am alone.</div><div><br></div><div>So -- here's my thought:</div><div><br></div><div>I think we have it pretty well mapped out what functionality belongs where:</div><div><br></div><div>one system for building packages (setuptools?)</div><div>one system for installing packages and managing dependencies (pip)</div><div>one system (really standard) for metadata and distributing packages (wheel)</div><div><br></div><div>[I'm just whipping this out off the top of my head, I'm sure we'd need to more clearly define what belongs where]</div><div><br></div><div>So why not have a setuptools-lite that only does the building? We need to keep the full over-burdened setuptools around, because lot sof folks are using those features. But for those of us that are doing something fairly new, and don't want to use stuff that setuptools "shouldn't" be doing, I'd love to have a setuptools-lite that only did what I really need, and was guaranteed NOT to accidentally introduce easy_install, etc...</div><div><br></div><div>This seems to me to be a way to go forward -- as it is we'll have people using setuptools features that they "shouldn't" forever, and never be able to move to a cleaner system.</div><div><br></div><div>Or maybe a flag:</div><div><br></div><div>import setuptools</div><div>setuptools.use_only_modern()</div><div><br></div><div>That would make the dependencies easier -- i.e. pip depends on some of setuptools being there -- hard to say that it needs either setuptools OR setuptools_lite.</div><div><br></div><div>Maybe I'm missing something here, but if the goal is for there to be one way to do things, let's have a tool chain that only does things one way.....</div><div><br></div><div>-Chris</div><div><br></div><div>-- <br></div><div class="gmail_signature"><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            (206) 526-6959   voice<br>7600 Sand Point Way NE   (206) 526-6329   fax<br>Seattle, WA  98115       (206) 526-6317   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</div></div>