python中的項(xiàng)目目錄結(jié)構(gòu)
一、常見的結(jié)構(gòu)
關(guān)于如何組織一個較好的Python工程目錄結(jié)構(gòu),已經(jīng)有一些得到了共識的目錄結(jié)構(gòu)。
在Stackoverflow的這個問題上,能看到大家對Python目錄結(jié)構(gòu)的討論。
這里面說的已經(jīng)很好了,我也不打算重新造輪子列舉各種不同的方式,這里面我說一下我的理解和體會。
假設(shè)你的項(xiàng)目名為foo, 我比較建議的最方便快捷目錄結(jié)構(gòu)這樣就足夠了:
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/: 存放項(xiàng)目的一些可執(zhí)行文件,當(dāng)然你可以起名script/之類的也行。foo/: 存放項(xiàng)目的所有源代碼。
(1) 源代碼中的所有模塊、包都應(yīng)該放在此目錄。不要置于頂層目錄。
(2) 其子目錄tests/存放單元測試代碼;
(3) 程序的入口最好命名為main.py。
docs/: 存放一些文檔。setup.py: 安裝、部署、打包的腳本。requirements.txt: 存放軟件依賴的外部Python包列表。README: 項(xiàng)目說明文件。
除此之外,有一些方案給出了更加多的內(nèi)容。
比如LICENSE.txt,ChangeLog.txt文件等,我沒有列在這里,因?yàn)檫@些東西主要是項(xiàng)目開源的時候需要用到。
二、如何解決多次目錄下數(shù)據(jù)的導(dǎo)入?
1.比如main.py
導(dǎo)入docs文件中的conf.py中的函數(shù)
from docs improt conf #這樣的導(dǎo)入是不成功的
因?yàn)閒rom導(dǎo)入的是該目錄即foo文件下的文件夾,docs與foo文件夾是一級的目錄導(dǎo)入不成功
2.解決方案
import os,sys path = os.path.join(os.path.dirname(os.path.abspath(__file__))) #返回腳本的絕對路徑 sys.path.append(path) #臨時添加搜索路徑,這種方法導(dǎo)入的路徑會在python程序退出后失效。 #path1=os.path.abspath(__file__) #print(path1)#當(dāng)前文件的絕對路徑 #path2=os.path.dirname(os.path.abspath(__file__)) #print(path2)#當(dāng)前文件的上一層目錄的絕對路徑 #path3=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #print(path3)#當(dāng)前文件的上上層目錄的絕對路徑 #os.path.join()函數(shù)用于路徑拼接文件路徑
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx+uwsgi+django環(huán)境搭建的方法步驟
這篇文章主要介紹了nginx+uwsgi+django環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Python實(shí)現(xiàn)柵欄密碼的加密解密方法詳解
這篇文章主要介紹了Python實(shí)現(xiàn)柵欄密碼的加密解密方法,所謂柵欄密碼,就是把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規(guī)律的話。不過柵欄密碼本身有一個潛規(guī)則,就是組成柵欄的字母一般不會太多2023-01-01
python計(jì)算最小優(yōu)先級隊(duì)列代碼分享
python計(jì)算最小優(yōu)先級隊(duì)列代碼分享,大家參考使用吧2013-12-12
Python+wxPython實(shí)現(xiàn)個人鏈接收藏夾
這篇文章主要介紹了如何使用wxPython和XML數(shù)據(jù)源創(chuàng)建一個具有按鈕和Web視圖的應(yīng)用程序窗口,以便輕松管理和訪問各種網(wǎng)頁鏈接,感興趣的可以了解下2023-08-08
Python 運(yùn)行 shell 獲取輸出結(jié)果的實(shí)例
今天小編就為大家分享一篇Python 運(yùn)行 shell 獲取輸出結(jié)果的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
用python實(shí)現(xiàn)k近鄰算法的示例代碼
這篇文章主要介紹了用python實(shí)現(xiàn)k近鄰算法的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
新手學(xué)習(xí)Python2和Python3中print不同的用法
在本篇文章里小編給大家分享的是關(guān)于Python2和Python3中print不同的用法,有興趣的朋友們可以學(xué)習(xí)下。2020-06-06

