On Thu, Mar 19, 2015 at 6:57 AM, Daniel Holth <dho...@gmail.com> wrote:
> If that's what you want then we could say the spec was to put the > requirements in setup_requires.txt, in the requirements.txt format, > which pip would eventually look for and install before running > setup.py > yes, that would be great -- and while we are at it, put the run-time dependencies in requirements.txt too. I brought this up a while ago, and it seems that requirements.txt is for applications, and setting install_requires in the setup.py is for package dependencies. But as we've seen, this creates problems -- so why not just keep all the dependency info in an external file??? Though this would not be backward compatible with all the setup.pys out there in the wild now... -Chris > > On Thu, Mar 19, 2015 at 9:32 AM, Leonardo Rochael Almeida > <leoroch...@gmail.com> wrote: > > > > On 18 March 2015 at 14:37, Daniel Holth <dho...@gmail.com> wrote: > >> > >> [...] > >> > >> The behavior we're aiming for would be: > >> > >> "installer run setup.py" - installs things > >> "python setup.py" - does not install things > > > > > > Besides that, I'd add that we're also looking for: "python setup.py" (by > > itself) should not raise ImportError, even if setup.py needs extra things > > installed for certain operations (egg_info, build, sdist, develop, > install). > > > > IMO, the biggest pain point is not people putting crazy stuff in > setup.py to > > get version numbers. For me, the biggest pain point is when setup.py > needs > > to import other packages in order to even know how to build: > > > > So I'd like to suggest the following series of small improvements to both > > pip and setuptools: > > > > * setuptools: `python setup.py setup_requires` dumps its setup_requires > > keyword in 'requirements.txt' format > > > > It's is already in this format, so should be trivial, but allows one to > do > > something like: > > > > $ python setup.py setup_requires > setup_requires.txt > > $ pip install -r setup_requires.txt > > > > Or in one bash line: > > > > $ pip install -r <( python setup.py setup_requires ) > > > > * setuptools: setup.py gains the ability to accept callables in most > (all?) > > of its parameters. > > > > This will allow people to move all top level setup.py imports into > > functions, so that we can turn code like this: > > > > from setuptools import setup, Extension > > import numpy > > > > setup(ext_modules=[ > > Extension("_cos_doubles", > > sources=["cos_doubles.c", "cos_doubles.i"], > > include_dirs=[numpy.get_include()])]) > > > > Into this: > > > > from setuptools import setup, Extension > > > > def ext_modules(): > > import numpy > > return [ > > Extension("_cos_doubles", > > sources=["cos_doubles.c", "cos_doubles.i"], > > include_dirs=[numpy.get_include()]) > > ] > > > > setup(ext_modules=ext_modules > > setup_requires=['setuptools']) > > > > * pip: When working with an sdist, before running "setup.py egg_info" > in a > > sandbox, pip would run "setup.py setup_requires", install those packages > in > > the sandbox (not in the main environment), then run "egg_info", "wheel", > > etc. > > > > Notice that the changes proposed above are all backward compatible, > create > > no additional pain, and allow developers to move all top level setup.py > > craziness inside functions. > > > > After that, we can consider making setup.py not call the easy_install > > functionality when it finds a setup_requires keyword while running other > > commands, but just report if those packages are not available. > > > > > > PS: Yes, I've already proposed something similar recently: > > https://mail.python.org/pipermail/distutils-sig/2015-January/025682.html > _______________________________________________ > Distutils-SIG maillist - Distutils-SIG@python.org > https://mail.python.org/mailman/listinfo/distutils-sig > -- 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