<p dir="ltr">On Sep 6, 2015 9:09 PM, "Chris Angelico" <<a href="mailto:rosuav@gmail.com">rosuav@gmail.com</a>> wrote:<br>
><br>
> On Mon, Sep 7, 2015 at 2:05 PM, Donald Stufft <<a href="mailto:donald@stufft.io">donald@stufft.io</a>> wrote:<br>
> > On September 6, 2015 at 11:26:04 PM, Chris Angelico (<a href="mailto:rosuav@gmail.com">rosuav@gmail.com</a>) wrote:<br>
> >> > How often does pip actually need to upgrade an already-installed<br>
> >> package in order to install something you've just requested?<br>
> >> Maybe the<br>
> >> rule could be simpler: if there are any upgrades at all, regardless<br>
> >> of<br>
> >> whether you've imported from those packages, recommend a restart.<br>
> >> The<br>
> >> use-case I'd be most expecting is this:<br>
> ><br>
> > Due to the nature of ``pip install --upgrade``, it's fairly common. At this<br>
> > time ``pip install --upgrade`` is "greedy" and will try to upgrade the named<br>
> > package and all of it's dependencies, even if their is already a version of the<br>
> > dependency installed that satisfies the version constraints.<br>
><br>
> Okay. What if "--upgrade" isn't the default when it's being called<br>
> from within an interactive session? Would that work?</p>
<p dir="ltr">FWIW the recursive behaviour of --upgrade is perhaps the single most hated feature of pip (almost all scientific packages find it so annoying that they refuse to provide dependency metadata at all), and AFAIK everyone has agreed to deprecate it in general and replace it with a non-recursive upgrade command, just no-one has gotten around to it:<br>
  <a href="https://github.com/pypa/pip/issues/59">https://github.com/pypa/pip/issues/59</a><br>
So I wouldn't worry about defining special interactive semantics in particular, someone just has to make the patch to change it in general :-)</p>
<p dir="ltr">The trickier bit is that I'm not sure there's actually any way right now to know what python packages were affected by a given install or upgrade command, because it can be the case that after 'pip install X' you then do 'import Y' -- the wheel and module names don't have to match, and in practice it's not uncommon for there to be discrepancies. (For example, after 'pip install matplotlib' you can do both 'import matplotlib' and 'import pylab'.)</p>
<p dir="ltr">-n</p>