Python工程的文檔結構

Python工程的文檔結構托慨,可以參考https://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application

有個答主提到了《Filesystem structure of a Python project》(http://as.ynchrono.us/2007/12/filesystem-structure-of-python-project_21.html)表制,確實寫的不錯。這篇文章推薦的結構:

Project/
|-- bin/
|   |-- project
|
|-- project/
|   |-- test/
|   |   |-- __init__.py
|   |   |-- test_main.py
|   |   
|   |-- __init__.py
|   |-- main.py
|
|-- setup.py
|-- README

開源工程對文檔結構肯定更高些愈诚,可以參考:https://jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/论巍。作者Jeff Knupp還寫過一本介紹Pythonic Code的小書,值得一看6撇恪(下載此書:https://github.com/iamseancheney/pythonbooks/blob/master/PythonStyle-Writing_idiomatic_python_3.pdf

其實更好的方法,可能是直接去GitHub上參考高贊項目的結構皿曲,比如PySpider(https://github.com/binux/pyspider)的文檔結構:

PySpider
.
├── Dockerfile
├── LICENSE
├── MANIFEST.in
├── README.md
├── data
├── docs
│   ├── About-Projects.md
│   ├── About-Tasks.md
│   ├── Architecture.md
│   ├── Command-Line.md
│   ├── Deployment-demo.pyspider.org.md
│   ├── Deployment.md
│   ├── Frequently-Asked-Questions.md
│   ├── Quickstart.md
│   ├── Running-pyspider-with-Docker.md
│   ├── Script-Environment.md
│   ├── Working-with-Results.md
│   ├── apis
│   │   ├── @catch_status_code_error.md
│   │   ├── @every.md
│   │   ├── Response.md
│   │   ├── index.md
│   │   ├── self.crawl.md
│   │   └── self.send_message.md
│   ├── conf.py
│   ├── imgs
│   │   ├── creating_a_project.png
│   │   ├── css_selector_helper.png
│   │   ├── demo.png
│   │   ├── developer-tools-network-filter.png
│   │   ├── developer-tools-network.png
│   │   ├── index_page.png
│   │   ├── inspect_element.png
│   │   ├── pyspider-arch.png
│   │   ├── request-headers.png
│   │   ├── run_one_step.png
│   │   ├── search-for-request.png
│   │   ├── tutorial_imdb_front.png
│   │   └── twitch.png
│   ├── index.md
│   └── tutorial
│       ├── AJAX-and-more-HTTP.md
│       ├── HTML-and-CSS-Selector.md
│       ├── Render-with-PhantomJS.md
│       └── index.md
├── mkdocs.yml
├── pyspider
│   ├── __init__.py
│   ├── database
│   │   ├── __init__.py
│   │   ├── base
│   │   │   ├── __init__.py
│   │   │   ├── projectdb.py
│   │   │   ├── resultdb.py
│   │   │   └── taskdb.py
│   │   ├── basedb.py
│   │   ├── elasticsearch
│   │   │   ├── __init__.py
│   │   │   ├── projectdb.py
│   │   │   ├── resultdb.py
│   │   │   └── taskdb.py
│   │   ├── local
│   │   │   ├── __init__.py
│   │   │   └── projectdb.py
│   │   ├── mongodb
│   │   │   ├── __init__.py
│   │   │   ├── mongodbbase.py
│   │   │   ├── projectdb.py
│   │   │   ├── resultdb.py
│   │   │   └── taskdb.py
│   │   ├── mysql
│   │   │   ├── __init__.py
│   │   │   ├── mysqlbase.py
│   │   │   ├── projectdb.py
│   │   │   ├── resultdb.py
│   │   │   └── taskdb.py
│   │   ├── redis
│   │   │   ├── __init__.py
│   │   │   └── taskdb.py
│   │   ├── sqlalchemy
│   │   │   ├── __init__.py
│   │   │   ├── projectdb.py
│   │   │   ├── resultdb.py
│   │   │   ├── sqlalchemybase.py
│   │   │   └── taskdb.py
│   │   └── sqlite
│   │       ├── __init__.py
│   │       ├── projectdb.py
│   │       ├── resultdb.py
│   │       ├── sqlitebase.py
│   │       └── taskdb.py
│   ├── fetcher
│   │   ├── __init__.py
│   │   ├── cookie_utils.py
│   │   ├── phantomjs_fetcher.js
│   │   ├── splash_fetcher.lua
│   │   └── tornado_fetcher.py
│   ├── libs
│   │   ├── ListIO.py
│   │   ├── __init__.py
│   │   ├── base_handler.py
│   │   ├── bench.py
│   │   ├── counter.py
│   │   ├── dataurl.py
│   │   ├── log.py
│   │   ├── multiprocessing_queue.py
│   │   ├── pprint.py
│   │   ├── response.py
│   │   ├── result_dump.py
│   │   ├── sample_handler.py
│   │   ├── url.py
│   │   ├── utils.py
│   │   └── wsgi_xmlrpc.py
│   ├── logging.conf
│   ├── message_queue
│   │   ├── __init__.py
│   │   ├── beanstalk.py
│   │   ├── kombu_queue.py
│   │   ├── rabbitmq.py
│   │   └── redis_queue.py
│   ├── processor
│   │   ├── __init__.py
│   │   ├── processor.py
│   │   └── project_module.py
│   ├── result
│   │   ├── __init__.py
│   │   └── result_worker.py
│   ├── run.py
│   ├── scheduler
│   │   ├── __init__.py
│   │   ├── scheduler.py
│   │   ├── task_queue.py
│   │   └── token_bucket.py
│   └── webui
│       ├── __init__.py
│       ├── app.py
│       ├── bench_test.py
│       ├── debug.py
│       ├── index.py
│       ├── login.py
│       ├── result.py
│       ├── static
│       │   ├── css_selector_helper.min.js
│       │   ├── debug.min.css
│       │   ├── debug.min.js
│       │   ├── index.min.css
│       │   ├── index.min.js
│       │   ├── package.json
│       │   ├── result.min.css
│       │   ├── result.min.js
│       │   ├── src
│       │   │   ├── css_selector_helper.js
│       │   │   ├── debug.js
│       │   │   ├── debug.less
│       │   │   ├── index.js
│       │   │   ├── index.less
│       │   │   ├── result.less
│       │   │   ├── splitter.js
│       │   │   ├── task.less
│       │   │   ├── tasks.less
│       │   │   └── variable.less
│       │   ├── task.min.css
│       │   ├── task.min.js
│       │   ├── tasks.min.css
│       │   ├── tasks.min.js
│       │   └── webpack.config.js
│       ├── task.py
│       ├── templates
│       │   ├── debug.html
│       │   ├── index.html
│       │   ├── result.html
│       │   ├── task.html
│       │   └── tasks.html
│       └── webdav.py
├── requirements.txt
├── run.py
├── setup.py
├── tests
│   ├── __init__.py
│   ├── data_fetcher_processor_handler.py
│   ├── data_handler.py
│   ├── data_sample_handler.py
│   ├── data_test_webpage.py
│   ├── test_base_handler.py
│   ├── test_bench.py
│   ├── test_counter.py
│   ├── test_database.py
│   ├── test_fetcher.py
│   ├── test_fetcher_processor.py
│   ├── test_message_queue.py
│   ├── test_processor.py
│   ├── test_response.py
│   ├── test_result_dump.py
│   ├── test_result_worker.py
│   ├── test_run.py
│   ├── test_scheduler.py
│   ├── test_task_queue.py
│   ├── test_utils.py
│   ├── test_webdav.py
│   ├── test_webui.py
│   └── test_xmlrpc.py
├── tools
│   └── migrate.py
└── tox.ini

27 directories, 177 files
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唱逢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子屋休,更是在濱河造成了極大的恐慌坞古,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劫樟,死亡現(xiàn)場離奇詭異痪枫,居然都是意外死亡,警方通過查閱死者的電腦和手機叠艳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門奶陈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人附较,你說我怎么就攤上這事吃粒。” “怎么了拒课?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵徐勃,是天一觀的道長事示。 經(jīng)常有香客問我,道長僻肖,這世上最難降的妖魔是什么肖爵? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮臀脏,結果婚禮上遏匆,老公的妹妹穿的比我還像新娘。我一直安慰自己谁榜,他們只是感情好,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布凡纳。 她就那樣靜靜地躺著窃植,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荐糜。 梳的紋絲不亂的頭發(fā)上巷怜,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音暴氏,去河邊找鬼延塑。 笑死,一個胖子當著我的面吹牛答渔,可吹牛的內(nèi)容都是我干的关带。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼沼撕,長吁一口氣:“原來是場噩夢啊……” “哼宋雏!你這毒婦竟也來了?” 一聲冷哼從身側響起务豺,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤磨总,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笼沥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚪燕,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年奔浅,在試婚紗的時候發(fā)現(xiàn)自己被綠了馆纳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡汹桦,死狀恐怖厕诡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情营勤,我是刑警寧澤灵嫌,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布壹罚,位于F島的核電站,受9級特大地震影響寿羞,放射性物質(zhì)發(fā)生泄漏猖凛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一绪穆、第九天 我趴在偏房一處隱蔽的房頂上張望辨泳。 院中可真熱鬧,春花似錦玖院、人聲如沸菠红。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽试溯。三九已至,卻和暖如春郊酒,著一層夾襖步出監(jiān)牢的瞬間遇绞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工燎窘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留摹闽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓褐健,卻偏偏與公主長得像付鹿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚜迅,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容