Python 項目開發實戰, 2/e Python项目开发实战(第2版)

日本BePROUD股份有限公司

  • 出版商: 人民郵電
  • 出版日期: 2017-01-01
  • 定價: $474
  • 售價: 8.0$379
  • 語言: 簡體中文
  • 頁數: 424
  • 裝訂: 平裝
  • ISBN: 7115438560
  • ISBN-13: 9787115438560
  • 相關分類: Python程式語言
  • 立即出貨

買這商品的人也買了...

商品描述

<內容簡介>

本書來自真正的開發現場,是BePROUD公司眾多極客在真實項目中的經驗總結和智慧結晶。作者從Python的環境搭建開始講起,介紹了Web應用的開發方法、項目管理及審查、測試與高效部署、服務器調試等內容,盡可能網羅了Python項目開發流程中的方方面面,有助於開發者建立有序生產環境,提高開發效率,讓編程事半功倍。此外,在本書中Python僅僅是一個載體,很多知識點在非Python下也適用。

<章節目錄>

第1部分Python開發入門1
第1章Python入門2
1.1安裝Python 2
1.1.1安裝deb包3
1.1.2安裝第三方包4
1.1.3 virtualenv的使用方法5
1.1.4多版本Python的使用7
1.2安裝Mercurial 9
1.2.1 Mercurial概述10
1.2.2安裝Mercurial 10
1.2.3創建版本庫11
1.2.4文件操作12
1.3編輯器與輔助開發工具14
1.3.1編輯器14
1.3.2開發輔助工具20
1.4小結22
第2章開發Web應用24
2.1瞭解Web應用24
2.1.1 Web應用是什麼24
2.1.2 Web應用與桌面應用的區別25
2.1.3 Web應用的機制25
2.2前置準備28
2.2.1關於Flask 28
2.2.2安裝Flask 28
2.3 Web應用的開發流程29
2.4明確要開發什麼應用30
2.4.1留言板應用的需求30
2.4.2明確必備的功能30
2.4.3明確必備的頁面31
2.5頁面設計31
2.5.1確定成品頁面的形式31
2.5.2編寫HTML和CSS 32
2.6實現功能37
2.6.1保存留言數據37
2.6.2獲取已保存的留言列表38
2.6.3用模板引擎顯示頁面39
2.6.4準備評論接收方的URL 42
2.6.5調整模板的輸出43
2.7查看運行情況45
2.8小結47
第3章Python項目的結構與包的創建48
3.1 Python項目48
3.2環境與工具49
3.2. 1用virtualenv搭建獨立環境49
3.2.2用pip安裝程序包55
3.2.3小結62
3.3文件結構與發布程序包62
3.3.1編寫setup.py 62
3.3.2留言板的項目結構64
3.3.3 setup .py與MANIFEST.in——設置程序包信息與捆綁的文件65
3.3.4 setup.py——創建執行命令69
3.3.5 python setup.py sdist——創建源碼發布程序包71
3.3.6提交至版本庫71
3.3.7 README.rst——開發環境設置流程73
3.3.8變更依賴包75
3.3.9通過requirements.txt固定開發版本77
3.3.10 python setup.py bdist_wheel——製作用於wheel發布的程序包78
3.3.11上傳到PyPI並公開79
3.3.12小結85
3.4小結86
第2部分團隊開發的周期87
第4章面向團隊開發的工具88
4.1問題跟蹤系統88
4.1.1 Redmine 88
4.1.2安裝Redmine 89
4.1.3 Redmine的設置91
4.1.4插件93
4.2版本控制系統94
4.2.1 Mercurial與Redmine的聯動94
4.2.2用於生成版本庫的插件95
4.3聊天系統97
4.3.1 Slack 97
4.3 .2 Slack的特點98
4.3.3 Slack做不到的事101
4.3.4 Slack的註冊102
4.4對團隊開發有幫助的工具102
4.4.1 Dropbox 102
4.4.2 Google Drive 102
4.5小結103
第5章項目管理與審查104
5.1項目管理與問題的區分使用104
5.1.1項目管理的前置準備工作104
5.1.2創建問題105
5.1.3整理問題107
5.1.4分割問題107
5.2問題模板108
5.2.1安裝插件108
5.2.2問題模板的使用方法109
5.2.3 Global Issue Templates 111
5.2.4問題模板示例112
5.3問題驅動開發114
5.3.1別急著敲代碼,先建問題114
5.3.2創建與問題編號同名的分支115
5.3.3讓發布與分支相對應115
5.3.4分支的合併116
5.4審查117
5.4.1為什麼需要審查117
5.4.2審查委託:代碼審查篇118
5.4.3審查委託:作業審查篇119
5.4.4實施審查:代碼審查篇120
5.4.5實施審查:作業審查篇123
5.5小結123
第6章用Mercurial管理源碼125
6.1 Mercurial版本庫的管理與設置125
6.1.1服務器上的Uinx用戶群設置125
6.1.2創建版本庫126
6.1.3 hgrc的設置127
6.1.4使用設置好的版本庫127
6.1.5使用hgweb建立簡易中央版本庫127
6.2靈活使用“鉤子” 128
6.2.1鉤子功能的設置方法129
6.2.2嘗試鉤子腳本129
6.2.3鉤子事件130
6.2.4鉤子功能的執行時機131
6.2.5編寫鉤子腳本134
6.3分支的操作136
6.4關於合併137
6.4.1未發生衝突的合併138
6.4.2合併時發生衝突以及用文本編輯器解決衝突的方法140
6.4.3合併的類型與衝突143
6.4.4用GUI的合併工具進行合併144
6.5 GUI客戶端147
6.5.1 GUI客戶端的介紹147
6.5.2 GUI客戶端的優點149
6.5.3 GUI客戶端的缺點151
6.6考慮實際運用的BePROUD Mercurial Workflow 152
6.6.1概述152
6.6.2背景152
6.6.3版本庫的結構153
6.6.4提交源碼154
6.6 .5提交設計156
6.6.6分支的合併157
6.6.7集成分支158
6.7小結160
第7章完備文檔的基礎162
7.1要記得給項目寫文檔162
7.1.1寫文檔時不想做的事162
7.1. 2什麼樣的狀態讓人想寫文檔164
7.2 Sphinx的基礎與安裝165
7.2.1 Sphinx的安裝166
7.2.2 reStructuredText入門167
7.2.3用Sphinx寫結構化文檔的流程169
7.2.4 Sphinx擴展174
7.3導入Sphinx可解決的問題與新出現的問題175
7.3.1由於是純文本,所以能在平時用的編輯器上寫文檔176
7.3.2信息與視圖相分離,所以能集中精神編輯內容,不用顧慮裝飾等外觀問題176
7.3.3可根據一個源碼輸出PDF等多種格式179
7.3.4通過結構化,文檔可分成幾個文件來寫180
7.3.5能用Mercurial等輕鬆實現版本管理181
7.3.6 API參考手冊與程序的管理一體化182
7.3.7通過Web瀏覽器共享184
7.3.8導入Sphinx後仍存在的問題185
7.4文檔集的創建與使用186
7.4.1什麼是文檔集186
7.4.2項目所需文檔的一覽表187
7.4.3面向項目組長、經理187
7.4.4面向設計者189
7.4.5面向開發者189
7.4.6面向客戶189
7.5小結190
第8章模塊分割設計與單元測試191
8.1模塊分割設計191
8.1.1功能設計191
8.1.2構成Web應用的組件192
8.1.3組件設計194
8.1.4模塊與程序包195
8.2測試197
8.2.1測試的種類197
8.2.2編寫單元測試198
8.2.3從單元測試中剔除環境依賴209
8.2.4用WebTest做功能測試215
8.3通過測試改良設計219
8.4推進測試自動化221
8.4.1用tox自動生成執行測試的環境221
8.4.2可重複使用的測試環境223
8.5小結223
第9章Python封裝及其運用224
9.1使用程序包224
9.1.1程序包的版本指定224
9.1.2從非PyPI服務器安裝程序包226
9.1.3程序包的發布格式228
9.1 .4生成wheelhouse的方法230
9.1.5從wheelhouse安裝231
9.2巧用程序包232
9.2.1私密發布232
9.2.2巧用requirements.txt 232
9.2.3 requirements.txt層級化233
9.2.4為部署和CI+tox準備的requiremests 234
9.2.5通過requirements.txt指定庫的版本235
9.3小結236
第10章用Jenkins持續集成237
10.1什麼是持續集成237
10.1.1持續集成的簡介237
10.1.2 Jenkins簡介239
10.2 Jenkins的安裝239
10.2.1安裝Jenkins主體程序239
10.2.2本章將用到的Jenkins插件240
10.3執行測試代碼241
10.3.1讓Jenkins運行簡單的測試代碼241
10.3.2添加Job 242
10.3.3 Job的成功與失敗244
10.4測試結果輸出到報告246
10.4.1安裝pytest 246
10.4.2調用pytest命令246
10.4.3根據pytest更改Jenkins的設置246
10.5顯示覆蓋率報告247
10.5.1安裝pytest-cov 248
10.5 .2從pytest獲取覆蓋率248
10.5.3讀取覆蓋率報告248
10.6執行Django的測試250
10.6.1安裝Python模塊250
10.6.2 Django的調整251
10.6.3示例代碼251
10.6.4 Jenkins的調整255
10.6.5 “構建後操作”選項卡的設置257
10.7通過Jenkins構建文檔260
10.7.1安裝Sphinx 261
10.7.2在Jenkins添加Job 261
10.7.3 Sphinx構建發出警告時令Job失敗261
10.7.4查看成果262
10.7.5通過Task Scanner Plugin管理TODO 263
10.7.6 Task Scanner Plugin的設置示例264
10.8 Jenkins進階技巧265
10.8.1好用的功能265
10.8.2進一步改善267
10.9小結268
第3部分服務公開269
第11章環境搭建與部署的自動化270
11.1確定所需環境的內容270
11.1.1網絡結構270
11.1.2服務器搭建內容的結構化272
11.1.3用戶的設置273
11.1.4選定程序包274
11.1. 5中間件的設置277
11.1.6部署280
11.2用Ansible實現自動化作業282
11.2.1 Ansible簡介282
11.2.2文件結構287
11.2.3執行Ansible 288
11.2.4與最初確定的結構相對應288
11.2.5將各步驟Ansible化289
11.2.6整理Ansible的執行環境295
11.3小結296
第12章應用的性能改善298
12.1 Web應用的性能298
12.1.1 Web應用面對大量集中請求時會產生哪些問題298
12.1. 2針對高負荷的對策299
12.2評估留言板應用的性能300
12.2.1什麼是應用的性能300
12.2.2安裝ApacheBench 300
12.2.3用ApachBench評估性能301
12.3 gunicorn簡介303
12.3.1安裝gunicorn 304
12.3. 2在gunicorn上運行應用304
12.4 nginx簡介306
12.4.1安裝nginx 306
12.4.2檢測nginx的性能307
12.5在nginx和gunicorn上運行應用310
12.5.1 gunicorn的設置310
12.5.2 nginx的設置310
12.5. 3評估nginx+gunicorn的性能311
12.5.4性能比較312
12.6小結313
第4部分加速開發的技巧315
第13章讓測試為我們服務316
13.1認識現狀:測試的客觀環境316
13.2將測試導入開發各個階段317
13.2.1文檔的測試(審查) 317
13.2.2測試設計的編寫方法(輸入與輸出) 320
13.2.3測試的實施與測試階段的輪換(做什麼,做多少) 323
13.3小結:測試並不可怕326
第14章輕鬆使用Django 327
14.1 Django簡介327
14.1.1 Django的安裝327
14.1.2 Django的架構327
14.1.3 Django的文檔331
14.2數據庫的遷移331
14.2.1什麼是數據庫的遷移331
14.2. 2 Django的遷移功能332
14.3 fixture replacement 339
14.3.1什麼是測試配置器339
14.3.2幾種不便使用默認配置器的情況342
14.3.3如何使用factory_boy 343
14.3.4消除“不便使用默認配置器的情況” 345
14.4 Django Debug Toolbar 346
14.5小結353
第15章方便好用的Python模塊355
15.1輕鬆計算日期355
15.1.1日期計算的複雜性355
15.1.2導入dateutil 357
15.2簡化模型的映射359
15.2.1模型映射的必要性359
15.2.2映射規則的結構化與重複利用360
15.2.3導入bpmappers 363
15.2.4與Django聯動366
15.2.5編寫JSON API 367
15.3圖像處理369
15.3.1安裝Pillow 369
15.3. 2圖像格式轉換371
15.3.3改變圖像尺寸372
15.3.4剪裁圖像374
15.3.5對圖像進行濾鏡處理375
15.4數據加密377
15.4.1安裝PyCrypto 377
15.4.2通用加密系統的加密及解密377
15.4 .3公鑰加密系統(RSA)的加密與解密378
15.5使用Twitter的API 382
15.5.1導入tweepy 382
15.5.2添加應用與獲取用戶密鑰382
15.5.3獲取訪問令牌385
15.5.4調用Twitter API 385
15.5.5編寫用Twitter認證的系統387
15.6使用REST API 393
15.6.1 REST簡介394
15.6.2導入Requests 394
15.6.3導入測試服務器394
15.6.4發送GET請求396
15.6.5發送POST請求397
15.6.6發送JSON格式的POST請求398
15.6.7使用GET/POST之外的HTTP方法399
15.7小結400
附錄401
附錄A VirtualBox的設置402
A.1安裝VirtualBox 402
A.2新建虛擬機403
A.3備份虛擬機404
附錄B OS(Ubuntu)的設置407
B.1安裝Ubuntu 407
B.2 SSH的設置417
B.3中文的設置419
B.4添加用戶419