当前位置: 首页 > news >正文

从零开始:用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. 点击'项目生成'按钮,等待项目生成完整后预览效果
http://www.cnnetsun.cn/news/517619.html

相关文章:

  • Llama Factory进阶:如何微调多模态模型处理图像和文本
  • AI写论文,哪款软件能让你从“码字民工”变“学术指挥官”?深度解析宏智树AI的降维打击
  • ElevenClock终极指南:Windows 11任务栏时钟自定义完全教程
  • 软件测试视角下的跨团队协作挑战
  • 免费AI视频增强神器:一键将模糊视频升级为4K超清画质
  • 开启机器人仿真新纪元:Webots全栈开发深度解析
  • 低显存AI视频生成实战:从零开始掌握WAN2.2 All In One
  • PaperXie 毕业论文写作功能:AI 赋能下的学术创作全流程解决方案
  • 基于YOLOv10的石油泄漏检测系统(YOLOv10深度学习+YOLO数据集+UI界面+模型)
  • EcoPaste终极指南:简单免费跨平台剪贴板管理工具完整使用教程
  • 玩转Llama Factory:快速定制你的AI助手
  • Llama Factory+云端GPU:学生党也能负担的大模型实验方案
  • 1Panel vs 传统SSH:运维效率提升300%的秘诀
  • 为什么Nxtscape正在重新定义开源AI浏览器的技术边界?
  • 24小时挑战:用Llama Factory快速构建行业专属大模型
  • 一小时极速体验:用预装镜像玩转Llama Factory模型微调
  • 终极指南:如何利用MQTT遗嘱消息构建智能设备离线通知系统
  • 1小时验证AGENT创意:快马原型开发指南
  • 传统VS现代:ZYPLAYER视频源配置效率对比
  • YOLO算法在智能安防中的实际应用案例
  • 教育行业应用:试卷文字识别镜像快速搭建
  • ComfyUI-LTXVideo视频生成完全指南:从零基础到精通实战
  • OCR系统搭建指南:基于CRNN的完整方案
  • 3分钟掌握SSH漏洞检测:Terrapin-Scanner实战指南
  • Lively音频可视化终极指南:让桌面随音乐起舞的完整教程
  • Llama Factory终极指南:从零开始微调你的第一个大模型
  • AI自主操控计算机框架终极指南:从技术原理到实战应用
  • 企业级AI训练平台私有部署方案:零门槛构建智能识别系统
  • Llama Factory黑盒解析:深入理解微调参数与显存优化
  • OCR自动化:用CRNN模型批量处理文档图片