pip supports applying upper/lower constraints on a requirements.txt file however invirtualenv doesn't. There should be a way to do this
Here is how upper constraints are applied in a tox.ini
[testenv]
install_command = pip install -U {opts} {packages}
deps =
-c{env:UPPER_CONSTRAINTS_FILE:upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt