Conda vs. Pip vs. Virtualenv 命令對比
任務 | Conda 命令 | Pip 命令 | Virtualenv 命令 |
---|---|---|---|
安裝包 | conda install $PACKAGE_NAME | pip install $PACKAGE_NAME | X |
更新包 | conda update --name $ENVIRONMENT_NAME $PACKAGE_NAME | pip install --upgrade $PACKAGE_NAME | X |
更新包管理器 | conda update conda | Linux/macOS: pip install -U pip Win: python -m pip install -U pip | X |
卸載包 | conda remove --name $ENVIRONMENT_NAME $PACKAGE_NAME | pip uninstall $PACKAGE_NAME | X |
創建環境 | conda create --name $ENVIRONMENT_NAME python | X | cd $ENV_BASE_DIR; virtualenv $ENVIRONMENT_NAME |
激活環境 | conda activate $ENVIRONMENT_NAME* | X | source $ENV_BASE_DIR/$ENVIRONMENT_NAME/bin/activate |
停用環境 | conda deactivate | X | deactivate |
卸載環境 | conda env remove --name 環境名稱 | ||
搜索可用包 | conda search $SEARCH_TERM | pip search $SEARCH_TERM | X |
從指定來源安裝包 | conda install --channel $URL $PACKAGE_NAME | pip install --index-url $URL $PACKAGE_NAME | X |
列出已安裝的包 | conda list --name $ENVIRONMENT_NAME | pip list | X |
創建依賴文件 | conda list --export | pip freeze | X |
列出所有環境 | conda info --envs | X | 安裝 virtualenv wrapper 后使用 lsvirtualenv |
安裝其他包管理器 | conda install pip | pip install conda | X |
安裝 Python | conda install python=x.x | X | X |
更新 Python | conda update python* | X | X |
備注:
conda activate
只適用于 Conda 4.6 及更高版本。在 Conda 4.6 之前的版本中,可以使用以下命令:- Windows:
activate
- Linux 和 macOS:
source activate
- Windows:
conda update python
會更新到該系列的最新版本,因此 Python 2.x 會更新到最新的 2.x 版本,Python 3.x 會更新到最新的 3.x 版本。
conda
conda
是一個開源的包管理器和環境管理器,最初由 Anaconda
提供,支持Python
以及其他語言(如 R、Ruby、Lua)的包管理。conda 不僅能安裝和管理 Python 包,還能創建獨立的虛擬環境,并安裝其他語言的包。
Conda 命令
conda activate
:激活指定的 Conda 環境,使當前終端會話使用該環境的 Python 和庫。conda clean
:清理 Conda 緩存,刪除不再需要的包和索引,釋放磁盤空間。conda compare
:比較不同環境中的包或包版本。conda config
:配置 Conda 的行為,例如設置源、代理等。conda create
:創建一個新的 Conda 環境,并指定環境中的 Python 版本及其他包。conda deactivate
:停用當前激活的 Conda 環境。conda doctor
:檢查 Conda 環境并解決常見問題。conda env
:管理 Conda 環境,例如創建、導出環境等。conda info
:顯示 Conda 環境和配置信息,包括已安裝的環境列表。conda init
:初始化 Conda,使得 Conda 能夠在終端中自動激活和管理環境。conda install
:安裝指定的包及其依賴,支持從 Conda 倉庫或指定的源安裝。conda list
:列出當前環境中已安裝的所有包及其版本。conda notices
:顯示 Conda 系統的通知信息。conda package
:管理 Conda 包,例如安裝、更新和刪除。conda repoquery
:查詢 Conda 倉庫中的包信息。conda remove
:卸載指定的包。conda rename
:重命名 Conda 環境。conda run
:在指定的環境中運行命令。conda search
:搜索 Conda 倉庫中的包。conda update
:更新指定環境中的包或 Conda 本身。
pip
pip
是 Python
的官方包管理工具,用于安裝和管理 Python 包。它從 Python 包索引(PyPI)上下載并安裝包
pip venv
venv
是 Python 內建的一個用于創建獨立虛擬環境的工具。每個虛擬環境有自己的 Python 解釋器和庫集合,確保包之間的依賴不沖突。
區別
1. 總體
-
Pip:
- 用途:Pip 是 Python Packaging Authority 推薦的工具,用于從 Python 包索引(PyPI)安裝 Python 軟件包。
- 包類型:僅限于 Python 包,安裝的包通常是
.whl
(wheel)格式,或者是源代碼格式(需要編譯)。 - 依賴管理:Pip 安裝包時,不會檢查環境中的所有包的依賴關系。它會按順序遞歸安裝依賴,可能會導致依賴沖突或破壞環境的穩定性。
-
Conda:
- 用途:Conda 是一個跨平臺的包和環境管理工具,可以從 Anaconda 倉庫或 Anaconda Cloud 安裝包,支持安裝和管理包含 C/C++ 庫、R 包等在內的多種軟件。
- 包類型:支持任何類型的軟件包,不僅僅是 Python 包,還包括 C、C++、R 等。
- 依賴管理:Conda 使用 SAT 解算器來確保環境中所有包的依賴關系得到滿足,因此可以避免安裝包時出現的版本沖突問題。
2. 環境管理
- Pip:沒有內建的環境管理功能,通常依賴
virtualenv
或venv
來創建虛擬環境來隔離不同的項目和包依賴。 - Conda:提供內建的環境管理功能,可以輕松創建和管理不同版本的 Python 及其包,適用于數據科學等領域,不同工具可能需要不同版本的 Python 或庫。
3. 安裝包時的依賴檢查
- Pip:安裝包時沒有自動檢查依賴,可能會導致環境破損,尤其是在包間依賴關系復雜時。
- Conda:使用 SAT 解算器自動檢查依賴,確保安裝的所有包的依賴關系都得到滿足,減少環境破損的風險。
有時某些包只在 PyPI 上提供,而不在 Conda 倉庫中。此時,使用 conda
安裝可用的包,然后使用 pip
安裝 PyPI 上的包。盡量優先使用 conda
安裝包,尤其是那些包含底層依賴的包。只有在 conda
中找不到所需包時,再使用 pip
來安裝 PyPI 上的包。Anaconda 倉庫中提供了超過 1500 個包,包括最流行的數據科學、機器學習和 AI 框架。通過 conda 可以安裝這些包,以及來自 conda-forge 和 bioconda 等頻道的數千個額外包,所有這些都可以通過 conda 安裝。盡管這些包的數量龐大,但與 PyPI 上超過 150,000 個包相比,它的數量仍然較少。偶爾會需要某些在 conda 中沒有的包,但可以在 PyPI 上找到,并且可以通過 pip 安裝。
特性 | Conda | Pip |
---|---|---|
支持的包類型 | 任何類型的軟件包(Python、C、C++、R等) | 僅支持 Python 包 |
依賴管理 | 內建依賴檢查,避免沖突 | 沒有內建依賴檢查,可能導致環境破損 |
環境管理 | 內建環境管理功能 | 依賴 virtualenv 或 venv 來創建環境 |
安裝源 | Anaconda 倉庫與 Cloud | PyPI |
是否需要編譯器 | 不需要 | 需要,特別是從源代碼安裝時 |
包管理方式 | 包是預編譯的二進制文件 | 包是源代碼或 .whl 格式 |