最近一有空就來學一點 Python,補充這接下來頗看好的語言工具知識!如果已經有學過幾套程式語言的話大部分人應該會先下手解決一個彈性問題:環境。

正如同 NodeJS 這套工具有 NPM 作為套件管理,而 Python 也一樣有不少很棒的套件可以呼叫,那..套件管理的作法或是工具?

Python 界的大大 KR 在 2016 年時寫了一份「管理流程」的文章。 經過一些資料的研究,也發現是常見大家使用的作法。

透過 pip & virtualenv 兩個工具的組合應用完成環境建置。

  • pip,處理安裝套件用
  • virtualenv,建立虛擬目錄執行環境(Standalone)

首先使用 virtualenv 的作用是建立一個獨立運行 Python 環境,而後進入到資料夾內「啟動」這個環境: source bin/activate ,接下來在這個資料夾內使用 pip 安裝的套件屬於「本地端」非「全域(系統端)」。整個環境的建立到使用套件都要特別注意「版本」的問題,目前 Python 2.7.x ~ 3.7.x 都還是服役中的版本,而大版本(2, 3)的差異可以說是要當作不同情境處理了。

離開 Python 這個虛擬的運行環境只需要輸入 deactivate 指令即可。

不論是在虛擬環境中運作還是直接全域下操作都不會不行,這屬於管理議題。

pip 這個套件安裝工具可以在確定一個執行環境(包含所有專案關聯套件)後進行輸出套件資料,僅需 pip freeze > requirements.txt 如此一行指令輸出當前所安裝的套件。

但!就是太簡陋了,以及之後對於套件更新也不友善,所以 KR 提出了一個作業流程:

  1. 進入專案目錄後先使用一個複製出來的輸出檔案 requirements-to-freeze.txt 來下指令 pip install -r requirements-to-freeze.txt --upgrade 更新所有套件。
  2. pip freeze > requirements.txt 再輸出更新後的套件與其對應版本。

但!! 儘管如此,這其實還是不夠,也太複雜。專案所操作到的套件版本沒有一個管理還有沒有對套件做驗證,這樣對大量使用套件有很強的相依問題的專案在其中一個套件有問題時連鎖反應壞掉。

所以 KR 大大又開發了一套管理工具(汗顏)叫做「Pipenv」,這套工具整合了虛擬環境與套件管理的好處,並且解決了管理上的流程。目前也是官方建議的管理工具!很值得從這邊下手~

中文介紹可以參考「Pipenv 更簡單、更快速的 Python 套件管理工具

透過這套工具可以把執行環境以及套件管理整合一起,讓開發者在不同環境下運作以及使用套件也不用怕流程上少做了什麼事。

至於 Python 本身的版本切換問題也還有看到一個工具可以協助:Pyenv。有需要測試版本兼容問題的時候可以參考。

Facebook 外掛功能


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *