python軟體開發目錄設計規範
阿新 • • 發佈:2020-12-16
技術標籤:Python
資料來源:https://book.apeland.cn/details/339/
軟體開發目錄
- 目錄可參考:https://github.com/pallets/flask
Foo/
|-- bin/
| |-- foo
|
|-- src/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |
| |-- abc.rst
|
|-- conf.py
|-- setup.py
|-- requirements. txt
|-- README
-
bin/: 存放專案的一些可執行檔案,當然你可以起名script/之類的也行。
-
src/: 存放專案的所有原始碼。(1) 原始碼中的所有模組、包都應該放在此目錄。不要置於頂層目錄。(2) 其子目錄tests/存放單元測試程式碼; (3) 程式的入口最好命名為main.py。
-
docs/: 存放一些文件。
-
setup.py: 安裝、部署、打包的指令碼。
-
requirements.txt: 存放軟體依賴的外部Python包列表。
-
README: 專案說明檔案。
-
conf.py:配置檔案
README
這個我覺得是每個專案都應該有的一個檔案,目的是能簡要描述該專案的資訊,讓讀者快速瞭解這個專案。
它需要說明以下幾個事項:
- 軟體定位,軟體的基本功能。
- 執行程式碼的方法: 安裝環境、啟動命令等。
- 簡要的使用說明。
- 程式碼目錄結構說明,更詳細點可以說明軟體的基本原理。
- 常見問題說明。
requirements.txt
這個檔案存在的目的是:
- 方便開發者維護軟體的包依賴。將開發過程中新增的包新增進這個列表中,避免在 setup.py 安裝依賴時漏掉軟體包。
- 方便讀者明確專案使用了哪些Python包。
- 如下所示
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile requirements/dev.in
#
alabaster==0.7.12 # via sphinx
appdirs==1.4.4 # via virtualenv
attrs==20.2.0 # via pytest
babel==2.8.0 # via sphinx
blinker==1.4 # via -r requirements/tests.in
certifi==2020.6.20 # via requests
cfgv==3.2.0 # via pre-commit
chardet==3.0.4 # via requests
click==7.1.2 # via pip-tools
distlib==0.3.1 # via virtualenv
docutils==0.16 # via sphinx
filelock==3.0.12 # via tox, virtualenv
greenlet==0.4.17 # via -r requirements/tests.in
identify==1.5.6 # via pre-commit
idna==2.10 # via requests
imagesize==1.2.0 # via sphinx
iniconfig==1.1.1 # via pytest
jinja2==2.11.2 # via sphinx
markupsafe==1.1.1 # via jinja2
nodeenv==1.5.0 # via pre-commit
packaging==20.4 # via -r requirements/docs.in, pallets-sphinx-themes, pytest, sphinx, tox
pallets-sphinx-themes==1.2.3 # via -r requirements/docs.in
pip-tools==5.3.1 # via -r requirements/dev.in
pluggy==0.13.1 # via pytest, tox
pre-commit==2.8.2 # via -r requirements/dev.in
py==1.9.0 # via pytest, tox
pygments==2.7.2 # via sphinx, sphinx-tabs
pyparsing==2.4.7 # via packaging
pytest==6.1.2 # via -r requirements/tests.in
python-dotenv==0.15.0 # via -r requirements/tests.in
pytz==2020.1 # via babel
pyyaml==5.3.1 # via pre-commit
requests==2.24.0 # via sphinx
six==1.15.0 # via packaging, pip-tools, tox, virtualenv
snowballstemmer==2.0.0 # via sphinx
sphinx-issues==1.2.0 # via -r requirements/docs.in
sphinx-tabs==1.3.0 # via -r requirements/docs.in
sphinx==3.2.1 # via -r requirements/docs.in, pallets-sphinx-themes, sphinx-issues, sphinx-tabs, sphinxcontrib-log-cabinet
sphinxcontrib-applehelp==1.0.2 # via sphinx
sphinxcontrib-devhelp==1.0.2 # via sphinx
sphinxcontrib-htmlhelp==1.0.3 # via sphinx
sphinxcontrib-jsmath==1.0.1 # via sphinx
sphinxcontrib-log-cabinet==1.0.1 # via -r requirements/docs.in
sphinxcontrib-qthelp==1.0.3 # via sphinx
sphinxcontrib-serializinghtml==1.1.4 # via sphinx
toml==0.10.2 # via pre-commit, pytest, tox
tox==3.20.1 # via -r requirements/dev.in
urllib3==1.25.11 # via requests
virtualenv==20.1.0 # via pre-commit, tox
# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools
setup.py
- 一般來說,用setup.py來管理程式碼的打包、安裝、部署問題。業界標準的寫法是用Python流行的打包工具setuptools來管理這些事情
- 示例1
from setuptools import find_packages, setup
setup(
name='pkDemo',
version='0.1',
install_requires=[
"Werkzeug>=0.15",
"Jinja2>=2.10.1",
"itsdangerous>=0.24",
"click>=5.1",
],
)
- 示例2
from setuptools import find_packages, setup
setup(
name='pkDemo',
version='0.1',
packages=find_packages(),
)
conf.py
- 配置檔案,可以.ini或者.yaml格式,看專案需要