Resolve "Introduce a dependency manager"
Closes #173 (closed)
@paul-lasky @colm.talbot @gregory.ashton Just to summarise what is going on in here:
- The
Pipfile
contains a list of requirements, it replaces manually editingrequirements.txt
from now - In order to work with pipenv run 'pip install pipenv --user`
- The
Pipfile.lock
has a list of the exact version of each dependency at a given commit - The
requirements.txt
lists those again - To update
Pipfile.lock
andrequirements.txt
, just runpipenv lock -r
-> I can do this before any new release -
lalsuite
is listed as an optional requirement because there are only pre-releases available on Pypi. I created an issue on the lalsuite issue tracker about it.
This allows people in the future to make their research more reproducible. If somebody cannot reproduce the results from a python script that is using our code, they can go back to the exact same repository version and run it in a virtual environment that provides the exact same dependency versions. That workflow looks roughly like this.
git clone 'TKFKAT'
cd TKFKAT
git checkout 'abcd1234' # <- old commit hash
pipenv install --ignore-pipfile # <- installs the dependencies from Pipfile.lock
And voila, you now have a virtual environment with all the old dependency versions.
Edited by Moritz Huebner