Python項(xiàng)目標(biāo)準(zhǔn)結(jié)構(gòu),我推薦這個(gè)!
你好,我是zhenguo
這是我的第503篇原創(chuàng)。
這篇文章講什么?
做數(shù)據(jù)分析習(xí)慣使用Jupyter notebook,編寫幾行代碼,很方便得到結(jié)果。
但在真正項(xiàng)目中,一般使用PyCharm或VSCode開發(fā)。那有的小伙伴就問(wèn)了,項(xiàng)目文件目錄有沒(méi)有一個(gè)標(biāo)準(zhǔn)的結(jié)構(gòu)?
應(yīng)該沒(méi)有唯一的統(tǒng)一標(biāo)準(zhǔn),但Python社區(qū)大佬Kenneth Reitz在2013年提出一個(gè)Python項(xiàng)目目錄結(jié)構(gòu),推薦你日后項(xiàng)目中參考。
Python項(xiàng)目推薦結(jié)構(gòu)
Kenneth推薦目錄結(jié)構(gòu),如下所示:
samplemod-master
├──?LICENSE
├──?MANIFEST.in
├──?Makefile
├──?README.rst
├──?docs
│???├──?Makefile
│???├──?conf.py
│???├──?index.rst
│???└──?make.bat
├──?requirements.txt
├──?sample
│???├──?__init__.py
│???├──?core.py
│???└──?helpers.py
├──?setup.py
└──?tests
????├──?__init__.py
????├──?context.py
????├──?test_advanced.py
????└──?test_basic.py
一共3個(gè)文件夾,17個(gè)文件。
先來(lái)看看第一個(gè)文件夾docs,它是項(xiàng)目相關(guān)文檔,包括依賴包安裝的Makefile和make.bat,項(xiàng)目配置conf.py,項(xiàng)目介紹文檔index.rst,是比README.rst更細(xì)化的一個(gè)文檔,README.rst更像一個(gè)項(xiàng)目總覽。
第二個(gè)文件夾sample,在Python中一般叫做包(package),它是項(xiàng)目核心代碼,一般會(huì)有多個(gè)這種包,__init__.py是Python包包括的文件。core.py和helpers.py是sample包里兩個(gè)核心模塊。
第三個(gè)包tests,是對(duì)應(yīng)于sample包的單元測(cè)試包,里面的模塊名稱一般以test開頭,測(cè)試sample里的每個(gè)模塊。
setup.py是做什么的?
有了上面三個(gè)最主要的包外,文件最重要的有setup.py,這個(gè)文件是做什么的?
簡(jiǎn)單來(lái)說(shuō),setup.py是和打包相關(guān)的配置模塊,一般結(jié)合setuptools。
有了setup.py,我們就可以安裝包到本地全局環(huán)境,或者上傳到PyPi,這樣全世界開發(fā)者都有機(jī)會(huì)搜索到你的包,并使用pip安裝上你的包。
里面代碼相對(duì)比較標(biāo)準(zhǔn)和固定,比如在這個(gè)項(xiàng)目里代碼如下:
from?setuptools?import?setup,?find_packages
with?open('README.rst')?as?f:
????readme?=?f.read()
with?open('LICENSE')?as?f:
????license?=?f.read()
setup(
????name='sample',
????version='0.1.0',
????description='Sample?package?for?Python-Guide.org',
????long_description=readme,
????author='Kenneth?Reitz',
????author_email='[email protected]',
????url='https://github.com/kennethreitz/samplemod',
????license=license,
????packages=find_packages(exclude=('tests',?'docs'))
)
看到這里面用到README.rst和LICENSE文件,并且指定打哪些包分發(fā)出去。
這篇文章梳理了Python項(xiàng)目的標(biāo)準(zhǔn)結(jié)構(gòu),希望對(duì)你有用,點(diǎn)贊或收藏吧,enjoy!
我的課程宣傳
我正在錄制一個(gè)從零學(xué)Python的體系課,目前已有120節(jié)視頻課,正在進(jìn)行的有爬蟲、數(shù)據(jù)分析、算法等,整個(gè)錄制完成應(yīng)該有300節(jié)視頻課。
預(yù)售階段我決定只299元。相當(dāng)于花一門課的錢,學(xué)到了很多門課。
這個(gè)課有專屬班級(jí)群,我會(huì)在里面答疑每一個(gè)提問(wèn)。

長(zhǎng)按圖中圓圈二維碼
zhenguo出品,品質(zhì)保證!
