Python 是一门伟大的程序语言, 其简单的语法吸引了无数的程序猿。但提到Python项目的构建工具,似乎做的不是很好,可以说Python社区的一个缺陷。
今天介绍一下如何利用Makefile,来提升Python项目的构建体验。
可能有人会觉得奇怪Makefile不是用来编译C代码的吗? 而且这是一个非常古老的工具了。
Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建。
通过一个实际的Makefile脚本来看看如何让构建变得简单。
.PHONY: help prepare-dev test lint run doc
VENV_NAME?=venv
VENV_ACTIVATE=. $(VENV_NAME)/bin/activate
PYTHON=${VENV_NAME}/bin/python3
.DEFAULT: help
help:
@echo "make prepare-dev"
@echo " prepare development environment, use only once"
@echo "make test"
@echo " run tests"
@echo "make lint"
@echo " run pylint and mypy"
@echo "make run"
@echo " run project"
@echo "make clean"
@echo " clean python cache files"
@echo "make doc"
@echo " build sphinx documentation"
# 安装python 和 搭建虚拟环境
prepare-dev:
sudo apt-get -y install python3.6 python3-pip
python -m venv venv
# 进入虚拟环境
venv: $(VENV_PATH)/bin/activate
source $(VENV_PATH)/bin/activate
test: venv
${PYTHON} -m pytest
lint: venv
${PYTHON} -m pylint
${PYTHON} -m mypy
run: venv
${PYTHON} app.py
clean-pyc:
@find . -name '*.pyc' -delete
@find . -name '__pycache__' -type d | xargs rm -fr
@find . -name '.pytest_cache' -type d | xargs rm -fr
clean:clean-pyc
@echo "## Clean all data."
doc: venv
$(VENV_ACTIVATE) && cd docs; make html
说明
通过这个Makefile,可以非常轻松来创建Python
项目,只需要 执行 make prepare-dev就可以构建好python
基础环境。
每次进入项目开发不用打很长一串source project /bin/activate,只需要执行 make venv即可。
另外,根据实际项目需要,还可以定制target来简化命令执行。比如:
login_db:
docker-compose run db bash
通过以上命令可以把登录docker数据库系统的命名简化到make login_db。