`
jimmee
  • 浏览: 538740 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

正确地组织python项目的结构 [转载]

阅读更多

统一的项目结构

写了不少python项目后, 越来越认识到Python项目结构重要性. 不管项目是否要开源, 是否要提交pypi, 项目结构的一致性带来的好处还有很多: 多人合作开发大家都有个基本的guideline, 别人日后维护也方便, 也容易形成项目开发的best practice.

所以花了写时间, 仔细研究了github上python的 top 10 项目的结构, 项目结构还真不太一样. 比较合我口味的是sandman这个项目. 我做了少许的修改, 主要是将tests package 从sandman package下移到顶层目录.

|- LICENSE
|- README.md
|- TODO.md
|- docs
| |-- index.md
| |-- installation.md
| |-- quickstart.md
|- sandman
| |-- init .py
| |-- exception.py
| |-- model.py
| |-- sandman.py
|- tests
| |-- init .py
| |-- test sandman.py
|- setup.py
|- tox.ini
|- .gitignore
|- requirements.txt
|- requirements
dev.txt ,比requirements.txt多的是单元测试依赖库

Top 10项目的研究发现:

  1. readme.md和setup.py和requirements.txt放在根目录下
  2. 一个项目至少有3个子目录, docs目录, root package 和tests package
  3. 的python代码要放在一个package中, 而不是一般的src目录中.
  4. tox 测试工具大家都在用.
  5. 用pytest和nose单元测试工具比较多, 尤其是pytest

脚手架工具:

下载并安装cookiecutter命令行工具, 网站: 下载 pip install cookiecutter

[cookiecutter更详细的教材]见: (http://pydanny.com/cookie-project-templates-made-easy.html)

参考:

http://www.jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/

分享到:
评论

相关推荐

    毕业设计基于Python豆瓣网站数据爬取与可视化实现项目源码.zip

    9. **项目组织与版本控制**:项目源码通常会按照一定的结构组织,如使用Git进行版本控制,通过GitHub或GitLab等平台进行协作和代码托管。 10. **代码文档**:良好的代码注释和文档对于理解项目流程至关重要。可以...

    水兵计算器-python版

    Python的面向对象编程特性在这里得到体现,使得代码组织清晰,易于维护和扩展。 综合以上分析,我们可以得出,"水兵计算器-python版"利用Python语言和面向对象编程技术,为大海战2玩家提供了一个方便的工具,用于...

    list例子转载他人

    在编程领域,`list` 是一个非常基础且重要的数据结构,尤其在 Python 语言中,它是最常用的数据容器之一。`list` 可以存储任意类型的对象,包括数字、字符串、其他列表,甚至是自定义的对象。这个“list例子转载他人...

    EEE-eee.zip资源包

    1. **基本语法**:Python以其简洁明了的语法著称,包括缩进、变量声明、数据类型(如整型、浮点型、字符串、布尔型)、控制结构(如if-else语句、for循环、while循环)等。初学者应掌握这些基础知识,为后续学习打下...

    转载的可视化计算器编程

    这可能涉及异常处理机制,如在C++中的`try-catch`或Python的`try-except`结构。 7. **内存功能** 高级计算器具有存储和召回功能,允许用户保存中间结果。这需要在程序中实现变量或寄存器来保存这些值,并设计相应...

    Eclipse快捷键大全(转载)

    Eclipse是一款广受欢迎的开源集成开发环境(IDE),主要用于Java编程,同时也支持其他语言如C++、Python等。它的高效性和强大的功能深受开发者喜爱,其中快捷键是提高开发效率的关键工具。这篇博客“Eclipse快捷键...

    Stu_Sta_System.zip_STA SYSTEMLOGO

    标题中的"Stu_Sta_System.zip_STA SYSTEMLOGO"表明这是一个与学生管理系统相关的压缩文件,其中可能包含了系统标识或logo的设计。"STA"可能是“Student ...同时,也可以从中学习到代码组织结构和良好的编程习惯。

    【RPA之家转载AA视频教程】4.A2019 Automation anywhere Supported programming languages.rar

    3. **支持的编程语言**:重点在于,教程将详细介绍Automation Anywhere支持的编程语言,如JavaScript、Python、VBScript等。这些语言可以用于编写自定义逻辑,实现更复杂的工作流,或者与现有系统进行深度集成。 4....

    各大论坛收集的网站设计文章集合

    好的内容策略包括明确的内容目标、有吸引力的标题、结构化的信息组织以及定期更新。 11. 技术实现:前端开发语言如HTML、CSS和JavaScript是构建网站的基础。了解这些语言的基本原理和最新框架(如React、Vue.js或...

    BBS论坛开发全套资料

    版块是论坛的分类,用于组织不同主题的讨论。版块的创建、修改、删除,以及版块内的排序和权限设置都需要考虑。 9. **通知与消息系统**: 包括站内信、回复通知、@功能,保持用户之间的有效沟通。 10. **优化与...

    Programming In Lua First Edition(Revision 1.0) - PDF [不推荐下载,请下载Revision 2.0]

    - **第0章 前言**:介绍了Lua的发展背景、适用场景以及本书的目的和组织结构。 - **第1章 起点**:介绍了Lua的基本概念,包括代码段、全局变量、词法约定等内容。 - **第2章 类型和值**:详细阐述了Lua中的基本...

Global site tag (gtag.js) - Google Analytics