• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
~懒汉~
博客园    首页    新随笔    联系   管理    订阅  订阅

python之路-15-软件目录结构规范

15.1层次清晰的目录结构

1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。

2.可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。

15.2目录组织方式

假设你的项目名为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: 安装、部署、打包的脚本。setuptools管理

requirements.txt: 存放软件依赖的外部Python包列表。

README: 项目说明文件。

注:开源项目或许需要增加LICENSE.txt,ChangeLog.txt文件等

 

关于README的内容(每个项目都应该有的一个文件)

它需要说明以下几个事项:

软件定位,软件的基本功能。

运行代码的方法: 安装环境、启动命令等。

简要的使用说明。

代码目录结构说明,更详细点可以说明软件的基本原理。

常见问题说明。

15.3 不同模块之间的调用

  1. 相对路径和绝对路径

#print(__file__)    ###在pycharm上执行的是绝对路径,但是程序是在后台执行的,打印相对路径

#print(os.path.abspath(__file__))   ###动态获得绝对路径
#print(os.path.dirname(os.path.abspath(__file__)))   ###找上级父目录
#print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ###找上上级父目录

 

 

  1. 模块之间调用

新建目录Atm,在Atm下新建Python Package分别是bin、conf、core,新建目录logs。Bin下新建python file名为atm.py,conf新建python file为setting.py,core下新建python file名main.py

现在通过bin下atm.py文件调用core下main.py文件里的函数。

Atm.py

 

import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from conf import setting
from core import main
main.login()

 

main.py

#!Author:lanhan
def login():
    print("Welcome to my atm")

 

 

 

posted @ 2017-11-26 13:32  ~懒汉~  阅读(206)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3