# I use this Makefile to automatize setting up the working space for me # As long as `virtualenv` and `pyenv` are installed, running `make` should set # up the virtual envrionment with everything needed. .PHONY: clean PYTHON_VERSION = 3.8 PYTHON_SUBVERSION = 3.8.12 PYENV_VERSIONS = $(HOME)/.pyenv/versions PYTHON_BIN = $(PYENV_VERSIONS)/$(PYTHON_SUBVERSION)/bin/python$(PYTHON_VERSION) VENV = venv PYTHON_VENV = $(VENV)/bin/python PIP = $(PYTHON_VENV) -m pip PIP_COMPILE = venv/bin/pip-compile all: .installed_deps .installed_deps: requirements.txt dev-requirements.txt $(PYTHON_VENV) $(PIP) install \ -r requirements.txt \ -r dev-requirements.txt touch $@ requirements.txt: pyproject.toml $(PIP_COMPILE) $(PIP_COMPILE) \ --resolver=backtracking \ --output-file $@ \ $< dev-requirements.txt: pyproject.toml $(PIP_COMPILE) $(PIP_COMPILE) \ --extra=dev \ --resolver=backtracking \ --output-file $@ \ $< $(PIP_COMPILE): $(PYTHON_VENV) $(PIP) install pip-tools $(PYTHON_VENV): $(PYTHON_BIN) virtualenv --python=$^ $(VENV) $(PIP) install --upgrade pip $(PYTHON_BIN): pyenv install $(PYTHON_VERSION) clean: rm -rf *.egg-info venv installed_deps