The reason I use `pip install -r` instead of `pip install .` (which is `python setup.py install`, I think), is because there is a line `git+https://github.com/victorlin/zope.sqlalchemy.git@bugfix-keep-session-with-flush` in Billy requirements.txt

You can see it there
https://github.com/balanced/billy/blob/master/requirements.txt#L2
https://github.com/balanced/billy/blob/master/setup.py#L14

I have a patch for a bug to the package `zope.sqlalchemy`. And unfortunately, `python setup.py install` doesn't support git cloning dependency. So I have to run it with `pip install -r requirements.txt` first.

The good news is I just realized the new version which contains my patch has been released. So I can install the package from PyPi instead of my own github repo now. 

I can update billy and remove that line now. But just curious, would there be any side effect to run `pip install -r requirements.txt` instead of `python setup.py install` while building the package? I think all they do are the same, install necessary files into the building folder and package them later. Just like to know, in case if we have similar situation.