On Tue, Dec 23, 2014 at 10:37 AM, Donald Stufft <don...@stufft.io> wrote:
> I’m going to attempt to read between the lines here a little bit. > Thank you -- you did an excellent job of capturing the gestalt of my confusion ! The “egg” name is heavily overloaded in setuptools. It is used all over the > place for varying sets of related but distinct concepts. The #egg= thing is > one of those setuptools concepts where it used that name for something > distinct but similar. Ideally it shouldn’t be #egg= or #wheel= but should > be #dist= or something similar since it’s neither an egg or a Wheel and > there is an open ticket in pip’s issue tracker to do that. > OK, that clears it up. Though I still get egg-info files all over the place -- not sure why that annoys me ;-) > To make a clarification though, pip itself doesn’t depend on setuptools, > it can install from Wheels without setuptools being installed on the system > at all. It does however rely on setuptools to be installed if it is > installing from a sdist. The reason for this is that pip uses setuptools as > a build tool, so when it invokes a setup.py it’s “building" that > distribution (even if it’s just pure python it needs “built”). However pip > does some tricks so that it will always uses setuptools to build the > project, regardless of if the project imports setuptools or distutils in > their setup.py. > Ah -- so pip needs to use setuptools to build, but a package doesn't have to explicitly use it in its setup.py. To that aim, install_requires specifies a packages dependencies as well as > other metadata for that package, and requirements.txt is just a list of > packages to install. The difference is subtle but a requirements.txt isn’t > attached to a particular project and the rest of the metadata like name, > version, etc. > hmm...I agree, but often shipped alongside setup.py -- kind of like the fact that the name "setup.py" is a conventions rather than a spec, but expected all over the place. On Tue, Dec 23, 2014 at 11:17 AM, Marcus Smith <qwc...@gmail.com> wrote: which I can now get with "pip --editable" or does that give me setuptools > develop mode anyway > "-e" uses setuptools develop mode. OK -- though it sounds like pip would do that whether or not I used setuptools in the setup.py. the main reason for setuptools is for "install_requires", which is > fundamental to pip dependency resolution. > but in general, it offers more features and it's more maintained than pure > distutils. > The standard advice is to use setuptools over distutils. OK -- still not clear how install_requires plays with conda - but it's common enough that I think conda simply ignores it (though not silently) The Packaging User Guide has a breakdown of install_requires vs > requirements files. > > https://packaging.python.org/en/latest/technical.html#install-requires-vs-requirements-files > > In brief, requirements files are usually for a whole "environment", > whereas install_requires is for a project. > A note about terminology here (both in this email and The Packaging User Guide) -- it seems to me that install_requires is about requirements for a "package" not a "project", and that, in fact, requirements.txt is best used for "projects". I guess the distinction may be that a "package" has a setup.py, whereas a project is somethign you are building that requires perhaps a stack of unrelated packages. So you can say : if you want to run my application, run: pip install -r requirements.txt first. "install_requires" is critical when publishing projects to PyPI. Good to know -- I may need to go there art some point. So I'll go with setuptools and install_requires, and see how it all goes. -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov
_______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig