关于如何组织一个较好的 Python 工程目录结构,已经有一些得到了共识的目录结构
0×01 常见的结构
关于如何组织一个较好的 Python 工程目录结构,已经有一些得到了共识的目录结构。在 Stackoverflow 的这个问题上,能看到大家对 Python 目录结构的讨论。
这里面说的已经很好了,我也不打算重新造轮子列举各种不同的方式,这里面我说一下我的理解和体会。
假设你的项目名为 foo, 我比较建议的最方便快捷目录结构这样就足够了:
1 | Foo/ |
简要解释一下:
- bin/: 存放项目的一些可执行文件,当然你可以起名 script/之类的也行。
- foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录 tests/存放单元测试代码; (3) 程序的入口最好命名为 main.py。
- docs/: 存放一些文档。
- setup.py: 安装、部署、打包的脚本。
- requirements.txt: 存放软件依赖的外部 Python 包列表。
- README: 项目说明文件。
- 除此之外,有一些方案给出了更加多的内容。比如 LICENSE.txt,ChangeLog.txt 文件等,我没有列在这里,因为这些东西主要是项目开源的时候需要用到。
0×02 如何解决多次目录下数据的导入?
1.比如:main.py 中导入 docs 文件中的 conf.py 中的函数
from docs improt conf #这样的导入是不成功的
因为 from 导入的是该目录即 foo 文件下的文件夹,docs 与 foo 文件夹是一级的目录导入不成功
2.解决方案
1 | import os,sys |