標籤:src 函數 可讀性 不同 目錄 使用 os.path abc 打包
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 不同模組之間的調用
- 相對路徑和絕對路徑
#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__)))) ###找上上級父目錄
- 模組之間調用
建立目錄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")
python之路-15-軟體目錄結構規範