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
待更新
總結
待更新