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/
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章