如何在Python项目中使用Makefile?

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。

参考


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容