《Python高手之路(第3版)》——1.2 项目布局

简介:

本节书摘来自异步社区《Python高手之路(第3版)》一书中的第1章,第1.2节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 项目布局

项目结构应该保持简单,审慎地使用包和层次结构:过深的层次结构在目录导航时将如同梦魇,但过平的层次结构则会让项目变得臃肿。

一个常犯的错误是将单元测试放在包目录的外面。这些测试实际上应该被包含在软件的子包中,以便:

不会偶尔被setuptools(或者其他打包库)作为tests顶层模块自动安装;

能够被安装,且被其他包用于构建自己的单元测试。

图1-1展示了一个项目的标准文件层次结构。

setup.py是Python安装脚本的标准名称。在安装时,它会通过Python分发工具(distutils)进行包的安装。也可以通过README.rst(或者README.txt或其他合适的名字)为用户提供重要信息。requirements.txt应该包含Python包所需要的依赖包,也就是说,所有这些包都会预先通过pip这样的工具进行安装,以保证你的包能正常工作。还可以包含test-requirements.txt,它只列出运行测试套件所需要的依赖包。最后,docs文件夹应该包括reStructuredText格式的文档,以便能够被Sphinx处理(参见5.1节)。

包中还经常需要包含一些额外的数据,如图片、shell脚本等。不过,关于这类文件如何保存并没有一个统一的标准。因此放到任何觉得合适的地方都可以。


31b8be762b7dae52ebed027f7d96ac047d28fa60

下面这些顶层目录也经常出现。

etc用来存放配置文件的样例。

tools用来存放与工具有关的shell脚本。

bin用来存放将被setup.py安装的二进制脚本。

data用来存放其他类型的文件,如媒体文件。

一个常见的设计问题是根据将要存储的代码的类型来创建文件或模块。使用functions.py或者exceptions.py这样的文件是很糟糕的方式。这种方式对代码的组织毫无帮助,只能让读代码的人在多个文件之间毫无理由地来回切换。

此外,应该避免创建那种只有一个__init__.py文件的目录,例如,如果hooks.py够用的话就不要创建hooks/__init__.py。如果创建目录,那么其中就应该包含属于这一分类/模块的多个Python文件。

相关文章
|
9月前
|
异构计算 Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
711 1
|
9月前
|
API 语音技术 开发者
Python 项目打包,并上传到 PyPI,分享项目
本文介绍了如何使用 Poetry 打包并发布一个 Python 项目至 PyPI。内容包括:项目创建、配置 `pyproject.toml` 文件、构建软件包、上传至 PyPI、安装与使用。通过实例 iGTTS 展示了从开发到发布的完整流程,帮助开发者快速分享自己的 Python 工具。
|
9月前
|
人工智能 Shell Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
336 0
|
12月前
|
监控 大数据 API
Python 技术员实践指南:从项目落地到技术优化
本内容涵盖Python开发的实战项目、技术攻关与工程化实践,包括自动化脚本(日志分析系统)和Web后端(轻量化API服务)两大项目类型。通过使用正则表达式、Flask框架等技术,解决日志分析效率低与API服务性能优化等问题。同时深入探讨内存泄漏排查、CPU瓶颈优化,并提供团队协作规范与代码审查流程。延伸至AI、大数据及DevOps领域,如商品推荐系统、PySpark数据处理和Airflow任务编排,助力开发者全面提升从编码到架构的能力,积累高并发与大数据场景下的实战经验。
Python 技术员实践指南:从项目落地到技术优化
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
360 2
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
406 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
809 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
284 61
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
1876 1

推荐镜像

更多