On Thu, Mar 19, 2015 at 7:12 AM, Daniel Holth <dho...@gmail.com> wrote:

> 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 )
>

A way of learning about setup_requires dependencies would be helpful for
homebrew-pypi-poet [1], which helps generate Homebrew formulae for
applications implemented in Python. Homebrew prefers to specify all
dependencies explicitly in the formula rather than allowing easy_install or
pip to perform dependency resolution at formula install time. [2] We use
installed metadata to learn about install_requires dependencies but
setup_requires dependencies aren't captured AFAIK (are they?) so formula
authors have to identify those by hand. This isn't critically painful for
me but I thought it was an interesting example use case.

Tim

[1] https://github.com/tdsmith/homebrew-pypi-poet

[2] As Chris Barker notes, --single-version-externally-managed is a good
way to get setuptools-based setup.py's to just install the package;
--single-version-externally-managed hands the install process over to
distutils. Of course, distutils setup.py's do not support the
--single-version-externally-managed option. To have a consistent CLI
interface, Homebrew borrows a shim from pip's source to make sure we always
call setuptools.setup() when we run setup.py so that we can hand the
install back to distutils:
https://github.com/Homebrew/homebrew/blob/master/Library/Homebrew/language/python.rb#L78-L94
-- thanks to Donald for pointing to the right place in the pip code.
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to