Python的開發環境
在 Python 開發環境中我們能看到很多工具,如 pip
、conda
、poetry
、 virtualenv
、 venv
、 pyenv
等等。他們是什麼,都有什麼作用,該怎麼選擇,如何構建一個開發環境,在這篇文章我會盡力全面的闡明,既然全面那麼很多細節就無法照顧,感興趣可以在參考資料中進一步瞭解。本文將人群分為兩類,一類是持保持最新策略的人,希望個人 PC 裡所有軟體工具都保持最新,想體驗最新特性,最新優化等;另一類是持保持穩定策略的人,比如部署在生產環境,不會經常變更版本,防止出現未知依賴問題等。對於這兩類人群提供不同的建議。
在 Python 開發環境中最常見任務是 Python 版本管理、虛擬環境、包管理、打包釋出、安裝。
各工具提供功能概覽:
venv
:提供虛擬環境。virtualenv
:提供虛擬環境。pyenv
:Python 版本管理。conda
:提供 Python 版本、虛擬環境、包管理、打包釋出(conda)、安裝。poetry
:虛擬環境相關、包管理、打包釋出(標準)、安裝。pip
:包管理、打包釋出(標準)、安裝。
若還有其他相關工具,歡迎在評論區推薦。
虛擬環境
虛擬環境包含一份獨立的 Python 環境,含獨立直譯器與庫集合(site-packages
)。conda
、poetry
、 virtualenv
、 venv
、 pyenv
都有虛擬環境相關的設定。
venv
是 Python 標準庫支援的虛擬環境建立庫。- 缺點
venv
在 Python 3.5 後推薦使用。- 只能建立與主環境 Python 版本一致的虛擬環境。
- 優點:無需額外下載。
- 使用:命令列使用簡單,功能簡單,無法滿足複雜需求,但可通過其提供的 API 來編寫完成複雜需求。面向第三方虛擬環境建立者。
- 缺點
virtualenv
是 Python 第三方庫,可以建立獨立的虛擬環境。- 優點
- 支援 Python2 和 Python3。
- 可以為虛擬環境指定本地已有的 Python 版本。
- 缺點
- 不支援 Python 版本下載。
- 依賴 Python。
- 優點
pyenv
是一個第三方工具,可以下載並管理多個 Python 版本。支援全域性切換、單專案 Python 版本指定等特性。- 缺點
- 不支援虛擬環境管理,需通過
virtualenv
或pyenv-virtualenv
來增強其功能。後者還提供管理conda
環境功能。 - 安裝複雜。Windows 使用者使用請使用
pyenv-win
。Linux/Mac 使用者使用pyenv
。
- 不支援虛擬環境管理,需通過
- 優點:不依賴 Python。
- 缺點
conda
支援下載建立不同版本 Python 虛擬環境。- 缺點
- 無法獲取最新 Python 版本。
- 安裝複雜。
- 無法與其他工具保持相容性。往往需要其他工具來提供對
conda
的相容性。
- 優點
- 使用方便
- 基本囊括開發環境所需的所有功能。推薦新手與持保持穩定決策的使用者使用。
- 缺點
poetry
並不提供虛擬環境管理相關功能,只使用虛擬環境。可以使用將虛擬環境放置專案內的方式來建立虛擬環境。poetry
定位是在單專案全面管理,所以與其他工具不太一樣。
虛擬環境管理工具推薦
- 對於持保持最新策略,推薦
pyenv
+poetry
。(如果只想要虛擬環境管理可以用pyenv
+pyenv-virtualenv
) - 對於持保持穩定策略,推薦
conda
。(同樣推薦poetry
用於單專案管理,conda
用於全域性管理)
pyenv
與conda
如果想同時使用,需要再安裝pyenv-virtualenv
。
包管理器
pip、conda、poetry
待更新
打包釋出
pip、conda、poetry
待更新
安裝
pip、conda、poetry
待更新
總結
待更新