簡體   English   中英

pyenv、virtualenv、anaconda有什么區別?

[英]What is the difference between pyenv, virtualenv, anaconda?

我是一名 ruby 程序員,正在嘗試學習 python。我對 pyenv 非常熟悉,因為它就像是從 rbenv 復制和粘貼。 Pyenv 有助於允許在一個系統中擁有多個版本的 python,並在不接觸系統敏感部分的情況下隔離 python。

我想每個 python 安裝都帶有 pip package。我仍然不明白的是,那里有很多好的 python 庫建議使用這個 virtualenv 和 anaconda。我什至可以找到 pyenv 的 virtualenv 插件。

現在我對這兩個 pyenv 和 virtualenv 的目的感到困惑。 更糟糕的是,在 pyenv 中有一個 virtualenv 插件。

我的問題是:

  • pyenv 和 virtualenv 有什么區別?
  • 在 pyenv 和 virtualenv 中使用 pip 命令有什么區別嗎?
  • 這個 pyenv virutalenv 是做什么的?

非常感謝您的示例解釋。

編輯:這里也值得一提pip ,因為condapip有與此主題相關的異同

pip:Python 包管理器。

  • 你可能會認為pip相當於 python 的 ruby gem命令
  • 默認情況下,python 不包含pip
  • 你可以使用homebrew安裝 Python,它會自動安裝 pip: brew install python
  • 默認情況下,OSX 的最終版本不包含 pip。 要將 pip 添加到您的 mac 系統版本的 python,您可以sudo easy_install pip
  • 您可以使用PyPI查找和發布 Python 包:Python 包索引
  • requirements.txt 文件相當於 ruby gemfile
  • 要創建一個需求文本文件, pip freeze > requirements.txt
  • 請注意,此時,我們已經在系統上安裝了 python,並且我們已經創建了一個 requirements.txt 文件,該文件概述了系統上已安裝的所有 python 包。

pyenv:Python 版本管理器

  • 來自文檔pyenv 可讓您輕松地在多個 Python 版本之間切換。 它簡單、不引人注目,並且遵循 UNIX 傳統的單一用途工具,可以很好地完成一件事。 這個項目是從 rbenv 和 ruby​​-build 派生出來的,並針對 Python 進行了修改。
  • 許多人對使用 python3 猶豫不決
  • 如果您需要使用不同版本的 python, pyenv可以讓您輕松管理。

virtualenv:Python 環境管理器。

  • 來自文檔正在解決的基本問題是依賴項和版本之一,以及間接權限。 假設您有一個應用程序需要版本 1 的 LibFoo,但另一個應用程序需要版本 2。如何同時使用這兩個應用程序? 如果您將所有內容都安裝到 /usr/lib/python2.7/site-packages(或任何您平台的標准位置)中,很容易導致您無意中升級了不應升級的應用程序。
  • 要創建virtualenv ,只需調用virtualenv ENV ,其中ENV是放置新虛擬環境的目錄。
  • 要初始化virtualenv ,您需要source ENV/bin/activate 要停止使用,只需調用deactivate
  • 激活virtualenv ,您可以通過針對項目的requirements.txt文件運行pip install -r工作區的所有包要求。

Anaconda:包管理器 + 環境管理器 + 附加科學庫。

  • 來自文檔Anaconda 4.2.0 包括 Python(2.7.12、3.4.5 和/或 3.5.2)的簡單安裝以及 100 多個預先構建和測試的科學和分析 Python 包的更新,其中包括 NumPy、Pandas 、SciPy、Matplotlib 和 IPython,通過簡單的conda install <packagename>可提供 620 多個包
  • 作為 Web 開發人員,我沒有使用過 Anaconda。 包括所有軟件包在內大約有 3GB。
  • 有一個精簡的miniconda版本,雖然我個人沒有使用它的經驗,但它似乎比使用pip + virtualenv更簡單。
  • 雖然conda允許您安裝軟件包,但這些軟件包與 PyPI 軟件包是分開的,因此您可能仍需要額外使用 pip,具體取決於您需要安裝的軟件包類型。

另見:

簡單的比喻:

  • pyenv ~ rbenv
  • pip ~ 捆綁器
  • 虛擬環境 ~ rvm 中的 gemset。 這可以由 bundler 直接管理,無需 gemset。

由於我使用 python3,我更喜歡名為venv的 python3 內置虛擬環境。 venv簡單易用。 我建議你閱讀它的官方文檔。 該文檔簡短明了。

在 ruby​​ 中,我們並不真正需要虛擬環境,因為捆綁器會處理它。 virtual env 和 bundler 都很棒,但是,它們有不同的解決方案來解決相同的問題。

簡單解釋: https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands

如果您過去使用過 pipvirtualenv ,則可以使用conda執行所有相同的操作。

  • Pip 是 package 經理
  • virtualenv 是一個環境管理器
  • 康達是兩者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM