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 不同模塊之間的調用
- 相對路徑和絕對路徑
#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-軟件目錄結構規範