python 程序设计解耦及包模块之前的导入、项目目录

1、程序中,低耦合,高内聚—是指模块之间低耦合、模块内部高内聚。这个软件系统的进化过程是由程序员参与的过程,以追求软件系统的可重用和易维护—也是追求消耗最小的能量。

2、各包模块导入

a、同级目录:

mycompany
 ├─ model1.py
 └─ model2.py

若在程序model2.py中导入模块model1.py,则可以直接使用 import model1 或 from model1 import xxx(from model1 import *);

b、调用子目录下的模块

mycompany
 ├─ web
 │  ├─ abc.py
 │  └─ xyz.py
 ├─ model1.py
 └─ model2.py

若在程序model1.py中导入模块abc.py,可以在web文件夹中建立空文件夹__init__.py文件。新目录结构如下:

mycompany
 ├─ web
 │  ├─ abc.py
 │  |_ xyz.py
 |  |_ __init__.py
 ├─ model1.py
 └─ model2.py

使用from web.abc import xxx 或者 import web.abc (输出需要print(web.abc.xxx(参数)))

c、调用上级目录下的文件

mycompany
 ├─ web
 │  ├─ abc.py
 │  |_ xyz.py
 |  |_ __init__.py
 |
 |——lib
 |  |_ test1.py
 |
 ├─ model1.py
 └─ model2.py

若程序test1.py中导入abc.py 和 model1.py,做法是先跳到mycompany目录下面,直接可以调用model1.py,然后在web下建立一个空文件__init__.py,这个文件我们上一步已经建过了,建好以后就可以像第2步调用子目录下模块一样,通过import web.abc 进行调用。具体代码如下:

import os
import sys
'''
print(__file__)#获取当前程序路径,注意:这里打印出来的路径为相对路径
#动态获取绝对路径
print(os.path.abspath(__file__)) #这才是当前程序绝对路径
print(os.path.dirname(os.path.abspath(__file__))) #当前程序上一级目录,其中dirname返回目录名,不要文件名
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#当前程序上上一级目录
'''
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #当前程序上上一级目录,这里为mycompany
sys.path.append(BASE_DIR) #添加环境变量
 
import model1
import web.abc

注意:

Python编程:pycharm同级目录导入模块报错问题

虽然报错但是可以正常运行,解决方法可以如下
在当前目录右键make_directory as-->Sources Root

python项目目录

参考:
https://www.cnblogs.com/bigberg/p/6423164.html
https://jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loong_XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值