<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 11, 2015 at 10:09 AM, Nathaniel Smith <span dir="ltr"><<a href="mailto:njs@pobox.com" target="_blank">njs@pobox.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr"><span class="">On Sep 11, 2015 9:13 AM, "Chris Barker" <<a href="mailto:chris.barker@noaa.gov" target="_blank">chris.barker@noaa.gov</a>> wrote:<br>
><br>
> On Fri, Sep 11, 2015 at 3:40 AM, Nathaniel Smith <<a href="mailto:njs@pobox.com" target="_blank">njs@pobox.com</a>> wrote:<br></span>
[...]<span class=""><br>
>><br>
>> The best / only correct way to install a package from source or a git checkout is 'pip install <source dir>'; never run setup.py directly.<br>
>><br>
>> (Yes, this is absurd, but I don't make the rules...)<br>
><br>
> Yeah, the separation of concerns of distutils, setuptools, pipi, etc is a big hairy mess.<br>
><br>
> But we *could* force, or at least encourage, the use of setuptools in the numpy build. The reason pip works is because it Monkey-patches setuptools into the install process.<br>
><br>
> Or maybe I'm am mis-informed - this is very tangled up!</span></p>
<p dir="ltr">pip monkeypatches setuptools into the install process... but first it monkeypatches setuptools to fix various weird behaviors. If you just use setuptools directly then you don't get the same thing as pip install.</p>
<p dir="ltr">Off the top of my head: setuptools will try to easy_install any dependencies, and setuptools will default to installing into a weird directory with a .pth file. I'm not sure that it records what files were installed either. OTOH does at least install .egg-info so that other tools can tell that your package is installed later.</p>
<p dir="ltr">It is a mess.</p><span class="HOEnZb"><font color="#888888">
<p dir="ltr">-n</p></font></span></blockquote><div>While we're piling on, I think (it's hard to know) that I ran into an issue where pip was (thankfully) installing a local package with zip_safe=False, but setup.py was only install the egg, making accessing the package's bundled data very difficult.<br></div><div><br></div><div>So yeah, +1 for "pip install <package_dir>"</div></div></div></div>