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