In this article I will show you how I use Python with virtualenv in my Makefiles to automate deployments and other things.
I think it is a good idea to automate recurring tasks to save time and reduce errors. In some of my projects I use multiple Python and Shell scripts to automate the tasks and use a Makefile to glue the pieces together. I also use Pythons virtualenv to keep my Python environments as clean as possible.
In the following snipped you can find an example how my Makefiles might look like.
.PHONY: prepare_venv cache build deploy
VENV_NAME?=venv
PYTHON=${VENV_NAME}/bin/python
prepare_venv: $(VENV_NAME)/bin/activate
$(VENV_NAME)/bin/activate: requirements.txt
test -d $(VENV_NAME) || virtualenv -p python3 $(VENV_NAME)
${PYTHON} -m pip install -U pip
${PYTHON} -m pip install -r requirements.txt
touch $(VENV_NAME)/bin/activate
cache: prepare_venv
${PYTHON} do_cacheing.py
build: prepare_venv
${PYTHON} build.py
deploy: build
scp -r output/example server:/srv/files/
As you might have noticed every regular task requires the prepare_venv
task to prepare the virtualenv. The prepare task checks if the virtualenv exists and create it if it is missing. Than it checks if the requirements.txt
file has changed since the last pip install
and runs it if required.
Links
- Website: Python (english)
- Website: Python virtualenv (english)