python 项目目录结构
(一) 目录组织方式
假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:
Foo/
|-- bin/
| |-- foo
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
(二) 说明如下
- bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
- foo/: 存放项目的所有源代码。
- 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。
- 其子目录tests/存放单元测试代码;
- 程序的入口最好命名为main.py。
- docs/: 存放一些文档。如果你的项目偏机器学习类,数据集(dataset),模型文件(model) 也可以放这里面
- setup.py: 安装、部署、打包的脚本。
- requirements.txt: 存放软件依赖的外部Python包列表。
- README: 项目说明文件。
- 除此之外,有一些方案给出了更加多的内容。比如LICENSE.txt,ChangeLog.txt文件等,这些东西主要是项目开源的时候需要用到。
(三) 常见问题
1. 项目包路径找不到
-
示例:ModuleNotFoundError: No module named ‘src’
-
解决方案:在程序的入口文件中,将项目的绝对路径添加到环境中,代码如下:
import sys, os # 将项目的根路径加入环境变量中 PROJ_NAME = 'MgqDetction' # 项目根路径 root_path = os.path.abspath(os.path.dirname(__file__)).split(PROJ_NAME)[0] proj_root_path = os.path.join(root_path, PROJ_NAME) sys.path.insert(0, proj_root_path)
参考资料
- https://www.cnblogs.com/haifeima/p/9928115.html