Resolve "Introduce a dependency manager"
Closes #173 (closed)
@paul-lasky @colm.talbot @gregory.ashton Just to summarise what is going on in here:
- The
Pipfilecontains a list of requirements, it replaces manually editingrequirements.txtfrom now - In order to work with pipenv run 'pip install pipenv --user`
- The
Pipfile.lockhas a list of the exact version of each dependency at a given commit - The
requirements.txtlists those again - To update
Pipfile.lockandrequirements.txt, just runpipenv lock -r-> I can do this before any new release -
lalsuiteis 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