入門理解WSGI

WSGI全名是"Web Server Gateway Interface",就是一個規範python server的interface。

傳統Web server如Apache+php會直接在runtime處理請求並return response,但python server通常只能長run一個python process,這樣會造成server脆弱,容易crash等等壞處。

但要配上Apache/nginx這些server,它們不會知道你的application怎樣運作,必須有個統一規範:WSGI。

簡單來說在WSGI架構底下,你的python server(WSGI Application)不會直接接收requests,而是會有多一層server(WSGI server)。

Read more   2018/03/18 posted in  python

理解Python的 relative 和 absolute import

在開發python project時,通常都會以package分開各部件,貫徹"Separation of concerns"。可是如果對python modules的概念不清晰,各部件之間的import可以成為project的大問題。

以下會以case study的形式解釋python import的常見問題:

Read more   2018/03/18 posted in  python

建置python虛擬環境(Virtual Environment)

多人共同協作一個project的時候非常需要各人的開發環境統一,才不會發生「我run不了你的code」這些情況。

「python的pip」不像「node js的npm」那樣有node_modulespackage.json這些規範,所以統一開發環境需要比較low level地做,一般都是使用virtualenv這個pip package。

Read more   2018/03/18 posted in  python

在Jupyter同時使用Python2 + Python3

(Updated on 2018-08-15)

Jupyter Notebook (前身ipython notebook)是個很好用的coding工具,它可以:

  1. 用作快速prototyping:分段execute、即時修改memory中的variables
  2. 用作寫報告:內容可以包括code、執行結果、圖表等等

以下會如何解釋分別以pipconda處理 Jupyter 的 python environment。

Read more   2018/03/18 posted in  python