Showing posts with label autopep8. Show all posts
Showing posts with label autopep8. Show all posts

Monday, July 16, 2018

python 依賴宣告、依賴隔離、程式碼排版

開發 python 的程式,要遵循好的開發紀律,避免日後的可移植性問題,最好還是在最初就做好「依賴宣告」和「依賴隔離」、「程式碼排版」

(*) 如何安裝 virtualenv 工具? (這個步驟後來可以省略,因為 python 3.3 之後,內建提供了 venv 模組,可以部分取代 virtualenv)

pip install virtualenv


依賴隔離  (dependency isolation) -- 建立虛擬環境
cd my_project_folder             // 先進入到 git 管理的 python 開發資料夾
兩種作法:
作法 1 (簡單、常用)
python -m venv my_env          // 建立一個類似 node_modules 的 my_env 資料夾。
作法 2
virtualenv my_env                      // 建立一個類似 node_modules 的 my_env 資料夾。
                  //  virtualenv 也可以在啟動時,用 -p 參數指定要用的 python 版本。

依賴隔離  (dependency isolation) -- 啟動、操作、離開虛擬環境
source my_env/bin/activate         //  啟動 python 的虛擬環境
pip install autopep8                 //  在虛擬環境中安裝套件 (作法1)
pip install -r requirements.txt   //  在虛擬環境中安裝套件 (作法2)
deactivate                              //  離開虛擬環境

依賴宣告 (dependency declaration)
啟動虛擬環境之後…
pip install -r requirements.txt          // 根據依賴宣告檔來安裝套件
pip freeze > requirements.txt          // 重新生成依賴宣告

程式碼排版 (linter)
autopep8 --in-place --aggressive

Monday, November 14, 2016

寫 python 用的環境配置

大概是因為前陣子寫 golang 時,受到 golang 的啟發後,再也回不去了。最近又開始寫一些 python ,馬上就覺得好像少了一些什麼東西?

仔細一想,原來少了跟 vim 搭配的 style checker plugin 。於是我立刻找了兩套來安裝。兩套都用看看,才知道哪一套比較順手。一套是 autopep8 對應的 vim plugin,另一套是 flake8 對應的 vim plugin 。前者檢查略鬆。後者檢查比較緊,但是只差一些些而已。

另外,還有一個很重要的,是 vim plugin 無法解決的。變數、類別取名的規範。這個只能靠頭腦去記了。

Guidelines derived from Guido's Recommendations
TypePublicInternal
Packageslower_with_under
Moduleslower_with_under_lower_with_under
ClassesCapWords_CapWords
ExceptionsCapWords
Functionslower_with_under()_lower_with_under()
Global/Class ConstantsCAPS_WITH_UNDER_CAPS_WITH_UNDER
Global/Class Variableslower_with_under_lower_with_under
Instance Variableslower_with_under_lower_with_under (protected) or __lower_with_under (private)
Method Nameslower_with_under()_lower_with_under() (protected) or __lower_with_under() (private)
Function/Method Parameterslower_with_under
Local Variableslower_with_under