python中的项目目录结构
一、常见的结构
关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。
在Stackoverflow的这个问题上,能看到大家对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/
: 存放项目的所有源代码。
(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。
(2) 其子目录tests/
存放单元测试代码;
(3) 程序的入口最好命名为main.py
。
docs/
: 存放一些文档。setup.py
: 安装、部署、打包的脚本。requirements.txt
: 存放软件依赖的外部Python包列表。README
: 项目说明文件。
除此之外,有一些方案给出了更加多的内容。
比如LICENSE.txt
,ChangeLog.txt
文件等,我没有列在这里,因为这些东西主要是项目开源的时候需要用到。
二、如何解决多次目录下数据的导入?
1.比如main.py
导入docs文件中的conf.py中的函数
from docs improt conf #这样的导入是不成功的
因为from导入的是该目录即foo文件下的文件夹,docs与foo文件夹是一级的目录导入不成功
2.解决方案
import os,sys path = os.path.join(os.path.dirname(os.path.abspath(__file__))) #返回脚本的绝对路径 sys.path.append(path) #临时添加搜索路径,这种方法导入的路径会在python程序退出后失效。 #path1=os.path.abspath(__file__) #print(path1)#当前文件的绝对路径 #path2=os.path.dirname(os.path.abspath(__file__)) #print(path2)#当前文件的上一层目录的绝对路径 #path3=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #print(path3)#当前文件的上上层目录的绝对路径 #os.path.join()函数用于路径拼接文件路径
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Python scikit-learn数据预处理常见方法和步骤
数据预处理是数据准备阶段的一个重要环节,主要目的是将原始数据转换成适合机器学习模型使用的格式,数据预处理可以显著提高机器学习模型的性能和准确度,本文给大家介绍了Python数据预处理常见方法和步骤,需要的朋友可以参考下2024-05-05
最新评论