page contents

看了好几个开源项目的 Python 代码,总结出他们都在用的四种项目结构

看了好几个开源项目的 Python 代码,发现他们用的项目结构都差不多。这些项目里有几个月 star 上万的热门工具,也有被大公司维护的框架。我花时间拆了一遍,把常用的四种结构整理出来。你可能会觉得这些结构眼熟,因为真的大部分项目都在用。

attachments-2026-07-NJMKKS766a56e3fa305ad.png看了好几个开源项目的 Python 代码,发现他们用的项目结构都差不多。这些项目里有几个月 star 上万的热门工具,也有被大公司维护的框架。我花时间拆了一遍,把常用的四种结构整理出来。你可能会觉得这些结构眼熟,因为真的大部分项目都在用。

第一种结构叫 “单一模块式”。这种最简单,适合小工具或者刚起步的项目。整个项目就是一个文件夹,里面放一个 main.py 或者 __init__.py,再配一个 requirements.txt。比如一些爬虫脚本、批量重命名工具,代码全写在一个文件里。好处是新建项目快,不用想太多。但一旦代码超过 500 行,就会变得很难维护。我见过不少人把这种结构直接推上 GitHub,过两个月自己都看不懂。

第二种结构是 “标准包式”。这个很常见,像 Flask 的早期版本就是这样的。它的核心是建一个和项目同名的文件夹,把核心代码放进去。外面再放一个 setup.py 或者 pyproject.toml,用来发布。比如你写一个叫 sendmail 的库,目录就是 sendmail/ 里面放 __init__.py 和其他模块。外面还有一个 tests/ 文件夹专门放测试。大部分开源项目的早期阶段都用这个结构,它让人一眼能看出哪里是代码,哪里是测试,哪里是配置文件。

第三种结构是 “多模块分层式”。大型项目比如 Django、Scrapy 就用这个。它的特点是项目里面分了好几个子模块,每个模块有自己的文件夹和 __init__.py。模块之间按功能划分,比如 core/ 放核心逻辑,utils/ 放工具函数,api/ 放网络接口。每个子模块还可以有自己的 tests/ 文件夹。这种结构的好处是代码边界清晰。你想找路由配置,直接去 api/urls.py,不需要翻整个项目。缺点是刚开始搭建时比较麻烦,得规划好依赖关系。

第四种结构是 “扁平加入口式”。很多面向终端的工具,比如 click、httpie 就用这种。它们一般会在项目根目录放一个 setup.py,然后核心代码放在一个扁平的包里面。通常只有一个顶级包,里面放了几个模块文件,不嵌套太多文件夹。同时会在根目录放一个 bin/ 或者 cli/ 文件夹作为命令行入口。比如入口文件 cli.py 只干一件事,解析参数然后调用其他模块。这种结构让用户下载项目后,马上能通过命令行测试。代码结构简单,维护成本低。

我刚开始写 Python 的时候,经常把项目搞成一团乱麻。所有代码堆在几个文件里,测试放在不同的目录,配置文件到处跑。后来看了别人的项目结构才明白,好结构不是累赘,是帮你节省时间的工具。比如用标准包式,别人 fork 你的项目,第一眼就知道怎么跑测试。用多模块分层式,新手也能快速定位 bug 在哪里。做开源项目,等于让人读你的代码。结构清晰,别人就愿意给你提 pr。

如果你现在正打算上传一个项目到 GitHub,不妨先看看自己属于哪种情况。写个小工具用单一模块式就够了。写个库用标准包式。写个庞大的系统就认真规划多模块。写个命令行工具就试试扁平加入口式。别在结构上花太多时间纠结,但也别完全不管。找到合适的结构,你的代码质量会提升一个档次。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

  • 发表于 2026-07-15 09:36
  • 阅读 ( 30 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2247 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 2247 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章