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/
在这里插入图片描述
在这里插入图片描述


版权声明:本文为weixin_42357472原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。