I've observed several times that I get different package versions if I do this::
pip install -r foo/requirements.txt -e foo
... as opposed to this, which installs the versions I expect::
pip install -r foo/requirements.txt
pip install -e foo
As far as I can tell, the problem is that in the one-liner version, we first download (and don't install) everything in requirements.txt, then during the installation of "foo", we install whatever's in its setup.py, which is often not pegged to any particular version, BEFORE installing the stuff we downloaded. That seems backwards to me.
It would be a lot less confusing/surprising if somehow, package foo's setup.py could know about the versions we've already downloaded and are going to install, and not go off finding random versions on pypi. But I don't grok the world of setuptools, I've no idea whether that's possible.