Python的開發環境

_SINC發表於2022-01-26

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 開發工作流-捕蛇者說

相關文章