Python開發環境主流開發工具選擇


Python的開發環境

在 Python 開發環境中我們能看到很多工具,如 pipcondapoetryvirtualenvvenvpyenv 等等。他們是什么,都有什么作用,該怎么選擇,如何構建一個開發環境,在這篇文章我會盡力全面的闡明,既然全面那么很多細節就無法照顧,感興趣可以在參考資料中進一步了解。本文將人群分為兩類,一類是持保持最新策略的人,希望個人 PC 里所有軟件工具都保持最新,想體驗最新特性,最新優化等;另一類是持保持穩定策略的人,比如部署在生產環境,不會經常變更版本,防止出現未知依賴問題等。對於這兩類人群提供不同的建議。

在 Python 開發環境中最常見任務是 Python 版本管理、虛擬環境、包管理、打包發布、安裝。

各工具提供功能概覽:

  • venv:提供虛擬環境。
  • virtualenv:提供虛擬環境。
  • pyenv:Python 版本管理。
  • conda:提供 Python 版本、虛擬環境、包管理、打包發布(conda)、安裝。
  • poetry:虛擬環境相關、包管理、打包發布(標准)、安裝。
  • pip:包管理、打包發布(標准)、安裝。

若還有其他相關工具,歡迎在評論區推薦。

虛擬環境

虛擬環境包含一份獨立的 Python 環境,含獨立解釋器與庫集合(site-packages)。condapoetryvirtualenvvenvpyenv 都有虛擬環境相關的設置。

  • venv 是 Python 標准庫支持的虛擬環境創建庫。
    • 缺點
      • venv 在 Python 3.5 后推薦使用。
      • 只能創建與主環境 Python 版本一致的虛擬環境。
    • 優點:無需額外下載。
    • 使用:命令行使用簡單,功能簡單,無法滿足復雜需求,但可通過其提供的 API 來編寫完成復雜需求。面向第三方虛擬環境創建者。
  • virtualenv 是 Python 第三方庫,可以創建獨立的虛擬環境。
    • 優點
      • 支持 Python2 和 Python3。
      • 可以為虛擬環境指定本地已有的 Python 版本。
    • 缺點
      • 不支持 Python 版本下載。
      • 依賴 Python。
  • pyenv 是一個第三方工具,可以下載並管理多個 Python 版本。支持全局切換、單項目 Python 版本指定等特性。
    • 缺點
      • 不支持虛擬環境管理,需通過 virtualenvpyenv-virtualenv 來增強其功能。后者還提供管理 conda 環境功能。
      • 安裝復雜。Windows 用戶使用請使用 pyenv-win。Linux/Mac 用戶使用 pyenv
    • 優點:不依賴 Python。
  • conda 支持下載創建不同版本 Python 虛擬環境。
    • 缺點
      • 無法獲取最新 Python 版本。
      • 安裝復雜。
      • 無法與其他工具保持兼容性。往往需要其他工具來提供對 conda 的兼容性。
    • 優點
      • 使用方便
      • 基本囊括開發環境所需的所有功能。推薦新手與持保持穩定決策的用戶使用。
  • poetry 並不提供虛擬環境管理相關功能,只使用虛擬環境。可以使用將虛擬環境放置項目內的方式來創建虛擬環境。poetry 定位是在單項目全面管理,所以與其他工具不太一樣。

虛擬環境管理工具推薦

  • 對於持保持最新策略,推薦 pyenv+poetry。(如果只想要虛擬環境管理可以用 pyenv+pyenv-virtualenv)
  • 對於持保持穩定策略,推薦 conda。(同樣推薦 poetry 用於單項目管理,conda 用於全局管理)

pyenvconda如果想同時使用,需要再安裝pyenv-virtualenv

包管理器

pip、conda、poetry

待更新

打包發布

pip、conda、poetry

待更新

安裝

pip、conda、poetry

待更新

總結

待更新

參考資料

  1. venv-Python 標准庫
  2. What is python's site-packages directory?
  3. python多環境管理(venv與virtualenv)
  4. pyenv
  5. pyenv-virtualenv
  6. 和 PyPA 的成員聊聊 Python 開發工作流-捕蛇者說


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM