Python目录结构参考
常用目录结构
-
对于Web项目,我们通常采用Flask或Django等框架,会有一套适合这种项目的工程目录。
-
对于爬虫项目,通常有Scrapy等开源框架,也会提供一套适合这种项目的工程目录。
-
对于通用的一些Python项目,Python并没有官方或标准的目录架构设计方案,一下几个结构供参考,根据自己的情况使用,大体相同,主要在一些细节管理上存在不同。
参考一
Project/
|-- bin/
| |-- a/
| |-- b/
|
|-- corecode/
| |-- m1/
| | |-- init.py
| | |-- xxx.py
| |-- m2/
| | |-- init.py
| | |-- xxx.py
| |
| |-- tests/
| | |-- init.py
| | |-- test_main.py
| |
| |-- init.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.ini
|
|-- extras/
| |-- C
| |-- x.JAVA
|
|-- log/
| |-- xxx.log
|
|-- resource/
| |-- icon/
| |-- xxx
|
|-- .gitignore
|-- CHANGELOG
|-- LICENSE.txt
|-- README
|-- requirements.txt
参考二
my_project/ # 项目根目录
├── my_project/ # 主模块目录(与项目名同名)
│ ├── __init__.py # 标识该目录为一个 Python 包
│ ├── module1.py # 模块1
│ ├── module2.py # 模块2
│ ├── submodule/ # 子模块目录
│ │ ├── __init__.py
│ │ └── utils.py # 子模块中的工具模块
├── tests/ # 测试代码目录
│ ├── __init__.py
│ ├── test_module1.py # 测试模块1
│ └── test_module2.py # 测试模块2
├── docs/ # 文档目录
│ ├── index.md # 项目文档
│ └── architecture.md # 架构文档
├── setup.py # 项目打包和安装的配置文件
├── requirements.txt # 项目依赖列表
├── README.md # 项目简介
├── .gitignore # Git 忽略规则
├── LICENSE # 项目许可证
└── pyproject.toml # PEP 518 配置文件(可选)
参考三
sampleproject
├── data
│ └── user.json
├── docs
│ └── history.md
├── pyproject.toml
├── src
│ ├── requests
│ │ └── __init__.py
│ └── sample
│ ├── __init__.py
│ ├── user
│ │ └── __init__.py
│ └── views
│ └── __init__.py
├── tests
│ ├── __init__.py
│ ├── user
│ │ └── __init__.py
│ └── views
│ └── __init__.py
└── tox.ini
目录说明
- bin/: 存放项目的一些可执行文件/脚本文件,(也可以用scripts,作为该目录名称)。
- corecode/: 存放项目的所有源代码(也可以用src,项目名,作为该目录名称)。
- (1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。
- (2) 其子目录tests/存放单元测试代码;
- (3) 程序的入口最好命名为main.py。
- docs/:文档类文件,例如参考文档、项目配置文件等;
- extras/:外部代码,例如C/C++、JAVA等;
- log/:存放运行log;
- resource/:存放代码执行的资源,例如界面图标、数据集等;
- .gitignore:Git项目文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。
- CHANGELOG:更新日志文件,若使用git等版本控制软件,可自动生成,前提是使用规范的书写方式;
- LICENSE:开源协议,常见开源许可协议可点击-这里-查看;
- README: 说明文档,一般包括使用的环境,安装的方法,软件的基本原理、测试数据及常见问题等
- requirements.txt:存放软件依赖的外部Python包列表:
- 生成:在项目根目录下运行
pip freeze > requirements.txt
- 安装:
pip install -r requirements.txt
- 生成:在项目根目录下运行
参考
Project目录结构
Python 项目工程化开发指南