This is a good start, but it has issues. You probably don't want
all of your locally installed packages in a requirements.txt file. Instead, they should be curated. I've been using pip-compile [0] for a while now (see the author's blog post [1] for a detailed explanation) and have become a big fan of it. With this model, you should enumerate only what your application uses directly and let pip-compile convert this list to a full version-locked requirements.txt. (Shameless plug: I also wrote a bit about why this is the best currently available option for specifying Python dependencies [2].)
[0] https://github.com/nvie/pip-tools#example-usage-for-pip-comp...
[1] http://nvie.com/posts/better-package-management/
[2] https://www.jonafato.com/2015/12/15/Rethinking-requirements-...