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