python中的项目目录结构

 更新时间:2024年02月18日 14:37:46   作者:没有刺的仙人掌  
这篇文章主要介绍了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 callable函数使用方法详解

    Python callable函数使用方法详解

    这篇文章主要介绍了Python callable函数使用方法,一个可callable的对象是指可以被调用执行的对象,并且可以传入参数, 用另一个简单的描述方式,只要可以在一个对象的后面使用小括号来执行代码,那么这个对象就是callable对象,下面来详细介绍使用方法,需要的朋友可以参考下
    2024-10-10
  • nginx+uwsgi+django环境搭建的方法步骤

    nginx+uwsgi+django环境搭建的方法步骤

    这篇文章主要介绍了nginx+uwsgi+django环境搭建的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python实现栅栏密码的加密解密方法详解

    Python实现栅栏密码的加密解密方法详解

    这篇文章主要介绍了Python实现栅栏密码的加密解密方法,所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多
    2023-01-01
  • python计算最小优先级队列代码分享

    python计算最小优先级队列代码分享

    python计算最小优先级队列代码分享,大家参考使用吧
    2013-12-12
  • pandas抽取行列数据的几种方法

    pandas抽取行列数据的几种方法

    这篇文章主要介绍了pandas抽取行列数据的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python+wxPython实现个人链接收藏夹

    Python+wxPython实现个人链接收藏夹

    这篇文章主要介绍了如何使用wxPython和XML数据源创建一个具有按钮和Web视图的应用程序窗口,以便轻松管理和访问各种网页链接,感兴趣的可以了解下
    2023-08-08
  • Python 运行 shell 获取输出结果的实例

    Python 运行 shell 获取输出结果的实例

    今天小编就为大家分享一篇Python 运行 shell 获取输出结果的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 用python实现k近邻算法的示例代码

    用python实现k近邻算法的示例代码

    这篇文章主要介绍了用python实现k近邻算法的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Python 获取项目根路径的代码

    Python 获取项目根路径的代码

    这篇文章主要介绍了Python 获取项目根路径的代码文中通过代码给大家介绍了Python获取当前目录和上级目录,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 新手学习Python2和Python3中print不同的用法

    新手学习Python2和Python3中print不同的用法

    在本篇文章里小编给大家分享的是关于Python2和Python3中print不同的用法,有兴趣的朋友们可以学习下。
    2020-06-06

最新评论