news 2026/7/8 18:23:01

从零开始:用Makefile管理你的Python项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零开始:用Makefile管理你的Python项目

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
创建一个用于Python项目的Makefile,包含以下功能:1) 安装依赖 2) 运行单元测试 3) 代码格式化 4) 打包发布 5) 清理临时文件。项目结构包含src/和tests/目录,使用pytest进行测试。
  1. 点击'项目生成'按钮,等待项目生成完整后预览效果

最近在整理一个Python小项目时,发现每次重复输入各种命令特别麻烦。比如要运行测试得敲pytest,格式化代码要输black .,打包发布又是一长串命令。作为一个懒人,我决定用Makefile来统一管理这些操作,没想到效果出奇的好。今天就把这个实战经验分享给大家,特别适合刚接触Makefile的朋友。

  1. 为什么选择Makefile

Makefile最初是用于C/C++项目的编译工具,但其实它在任何需要自动化流程的场景都很好用。相比起写一堆shell脚本,Makefile有几个明显优势:

  • 命令可以分模块组织,比如make test就只跑测试
  • 会自动检查文件变更,避免重复执行
  • 语法简洁,依赖关系一目了然
  • 几乎所有开发环境都内置支持

  • 基础项目结构准备

我的Python项目结构很简单:

project/ ├── src/ # 源代码目录 ├── tests/ # 测试代码目录 ├── requirements.txt # 依赖文件 └── Makefile # 今天的主角
  1. 编写第一个Makefile目标

从最简单的开始,先实现依赖安装功能。在Makefile里写入:

install: pip install -r requirements.txt

这样以后只需要运行make install就能一键安装所有依赖。注意命令前必须是Tab缩进,这是Makefile的语法要求。

  1. 添加测试自动化

项目用pytest做测试,增加test目标:

test: pytest tests/ -v

这里的-v参数让输出更详细。我还喜欢加个覆盖率检查:

test-coverage: pytest --cov=src tests/
  1. 代码格式化整合

团队协作时保持代码风格一致很重要,我用black做格式化:

format: black src/ tests/

可以再加个检查格式的目标,在CI中使用:

check-format: black --check src/ tests/
  1. 打包发布自动化

Python项目通常打包成wheel文件,添加:

build: python -m build

发布到PyPI可以这样:

publish: build twine upload dist/*

注意这里的publish依赖于build目标,Makefile会自动先执行build。

  1. 清理临时文件

开发过程中会产生很多临时文件,添加clean目标:

clean: rm -rf dist/ rm -rf *.egg-info/ find . -name "__pycache__" -exec rm -rf {} + find . -name "*.pyc" -exec rm -f {} +
  1. 完整Makefile示例

把上面所有功能组合起来:

.PHONY: install test test-coverage format check-format build publish clean install: pip install -r requirements.txt test: pytest tests/ -v test-coverage: pytest --cov=src tests/ format: black src/ tests/ check-format: black --check src/ tests/ build: python -m build publish: build twine upload dist/* clean: rm -rf dist/ rm -rf *.egg-info/ find . -name "__pycache__" -exec rm -rf {} + find . -name "*.pyc" -exec rm -f {} +
  1. 实际使用体验

有了这个Makefile后,日常开发流程变得特别顺畅: - 新拉取代码后make install安装依赖 - 写代码时经常make test跑测试 - 提交前make format统一代码风格 - 发布时make publish一键打包上传 -make clean随时保持项目干净

  1. 进阶技巧

  2. 使用变量避免重复路径:makefile SRC_DIR = src TEST_DIR = tests

  3. 添加help目标显示所有命令:makefile help: @echo "install 安装依赖" @echo "test 运行测试" @echo "format 格式化代码"
  4. 支持环境变量,比如指定Python路径:makefile PYTHON = python3

  5. 常见问题解决

  6. 如果遇到"Missing separator"错误,检查命令前是否用了Tab而不是空格

  7. 命令前加@可以禁止回显,让输出更干净
  8. 使用.PHONY声明伪目标,避免和同名文件冲突
  9. Windows系统可能需要安装make工具,或者使用WSL

  10. 项目协作建议

把Makefile提交到代码仓库,这样所有开发者都能使用相同的命令。可以在README中注明基本用法,比如:

## 开发命令 - 安装依赖: `make install` - 运行测试: `make test` - 格式化代码: `make format`

这个Makefile方案我已经在几个Python项目中实际使用,效果非常好。特别是团队新成员上手时,不用再记各种复杂的命令,直接make help就能看到所有可用操作。

最近发现InsCode(快马)平台对Python项目支持很友好,可以直接在浏览器里编写和运行代码,还能一键部署成可访问的Web服务。他们的在线编辑器响应速度很快,不需要配置本地环境就能开始coding,特别适合快速验证想法。

对于需要展示的Python项目,平台的一键部署功能简直是神器。不用操心服务器配置,点个按钮就能把项目变成在线可访问的状态,分享给其他人特别方便。我试过把一个小工具部署上去,整个过程不到1分钟,比传统方式省心太多了。

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
创建一个用于Python项目的Makefile,包含以下功能:1) 安装依赖 2) 运行单元测试 3) 代码格式化 4) 打包发布 5) 清理临时文件。项目结构包含src/和tests/目录,使用pytest进行测试。
  1. 点击'项目生成'按钮,等待项目生成完整后预览效果
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 11:40:12

突破视频生成技术瓶颈:CogVideoX-5B实战指南与性能优化

突破视频生成技术瓶颈:CogVideoX-5B实战指南与性能优化 【免费下载链接】CogVideoX-5b 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/CogVideoX-5b 你是否曾经遇到过这样的困境:想要通过文字描述生成高质量视频,却受限于…

作者头像 李华
网站建设 2026/7/1 11:40:13

CRNN OCR在图书馆的应用:古籍文献数字化实践

CRNN OCR在图书馆的应用:古籍文献数字化实践 📖 技术背景:OCR文字识别的演进与挑战 在数字化浪潮席卷全球的今天,图书馆、档案馆等文化机构正面临一项紧迫任务——将海量纸质文献转化为可检索、可编辑的电子文本。传统的人工录入方…

作者头像 李华
网站建设 2026/7/1 16:10:49

工程师与测试人员沟通的常见挑战:从冲突到协作的桥梁

在软件开发生命周期中,工程师(开发人员)与测试人员的沟通是确保产品质量的核心环节。然而,作为测试从业者,您可能经常面临各种沟通障碍,这些挑战不仅拖延项目进度,还可能导致缺陷遗漏或团队摩擦…

作者头像 李华
网站建设 2026/7/1 11:40:28

Spring AI文档处理终极指南:5步掌握多格式文件读取与转换

Spring AI文档处理终极指南:5步掌握多格式文件读取与转换 【免费下载链接】spring-ai 项目地址: https://gitcode.com/gh_mirrors/sp/spring-ai Spring AI作为企业级AI应用开发框架,其文档处理功能为开发者提供了强大的文件读取与转换能力。无论…

作者头像 李华
网站建设 2026/7/4 16:24:57

基于YOLOv10的红细胞、白细胞和血小板检测系统(YOLOv10深度学习+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 项目背景: 红细胞检测在医学诊断、血液分析和疾病监测中具有重要意义。传统的红细胞检测方法依赖于显微镜观察或流式细胞术,效率较低且需要专业人员操作。基于深度学习的目标检测技术能够自动识别红细胞、白细胞和血小板,并在复杂背景下提…

作者头像 李华