Python專案標準結構,我推薦這個!

語言: CN / TW / HK

這篇文章講什麼?
做資料分析習慣使用Jupyter notebook,編寫幾行程式碼,很方便得到結果。

但在真正專案中,一般使用PyCharm或VSCode開發。那有的小夥伴就問了,專案檔案目錄有沒有一個標準的結構?

應該沒有唯一的統一標準,但Python社群大佬Kenneth Reitz在2013年提出一個Python專案目錄結構,推薦你日後專案中參考。

Python專案推薦結構
Kenneth推薦目錄結構,如下所示:

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個資料夾,17個檔案。

先來看看第一個資料夾docs,它是專案相關文件,包括依賴包安裝的Makefile和make.bat,專案配置conf.py,專案介紹文件index.rst,是比README.rst更細化的一個文件,README.rst更像一個專案總覽。

第二個資料夾sample,在Python中一般叫做包(package),它是專案核心程式碼,一般會有多個這種包,__init__.py是Python包包括的檔案。core.py和helpers.py是sample包裡兩個核心模組。

第三個包tests,是對應於sample包的單元測試包,裡面的模組名稱一般以test開頭,測試sample裡的每個模組。

setup.py是做什麼的?
有了上面三個最主要的包外,檔案最重要的有setup.py,這個檔案是做什麼的?

簡單來說,setup.py是和打包相關的配置模組,一般結合setuptools。

有了setup.py,我們就可以安裝包到本地全域性環境,或者上傳到PyPi,這樣全世界開發者都有機會搜尋到你的包,並使用pip安裝上你的包。

裡面程式碼相對比較標準和固定,比如在這個專案裡程式碼如下:

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檔案,並且指定打哪些包分發出去。

以上就是本次分享的所有內容,想要了解更多歡迎前往公眾號:Python 程式設計學習圈,每日干貨分享