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

简要解释一下:

  1. bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
  2. foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/存放单元测试代码; (3) 程序的入口最好命名为main.py
  3. docs/: 存放一些文档。
  4. setup.py: 安装、部署、打包的脚本。
  5. requirements.txt: 存放软件依赖的外部Python包列表。
  6. 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()函数用于路径拼接文件路径

 

  • 16
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python项目目录结构可以根据个人或团队的需求进行灵活的设计,但也有一些得到共识的目录结构可以参考。一个较好的Python工程目录结构可以包含以下几个目录文件: 1. bin/: 存放项目的一些可执行文件,例如脚本文件。也可以使用其他命名,比如script/等等。 2. foo/: 存放项目的所有源代码。所有的模块和包都应该放在这个目录下,不要置于顶层目录。此目录下的子目录tests/可以用于存放单元测试代码。通常,项目的入口文件可以命名为main.py。 3. docs/: 存放一些文档,可以包括项目的说明文档、API文档或其他相关文档。 4. setup.py: 用于项目的安装、部署和打包的脚本。 5. requirements.txt: 存放项目所依赖的外部Python包的列表。这个文件可以简化项目的依赖管理。 6. README: 项目的说明文件,可以包含项目的简介、使用方法、贡献指南或其他相关信息。 这只是一个较好的Python工程目录结构的示例,实际上可以根据项目的具体需求进行适当的调整和扩展。在实际的项目中,还可以根据需要添加其他目录文件,比如数据文件、配置文件等。重要的是要保持目录结构的清晰和有组织性,以便于团队成员的协作和维护。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python 项目目录结构](https://blog.csdn.net/qq_21467113/article/details/86541268)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python工程 目录结构 结构化你的工程](https://blog.csdn.net/erfan_lang/article/details/120528090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值