文章目錄
背景
- 開發過程中,需要使用 python 2 或 python 3 或 不同版本的 python 包
目標
- 通過工具,管理不同版本的 python 或 python 環境,以適應不同需要,例如 在 python 2 和 python 3 之間切換;再如,切換到安裝有指定版本 python 包的 python 環境
解決方案
- conda 是一個包管理器,也是一個環境管理器
- 通過 conda 工具,管理 python 多環境、多版本
準備工作
查看 conda 命令的幫助信息
# 以 update 命令爲例,查看 conda 命令幫助
conda update --help
確認已經安裝好 conda 工具
conda --version
升級 conda
conda update conda
conda 管理 python 環境
創建 python 環境
# 基於安裝 conda 時的 python 版本
# 創建一個名爲 py_env_for_test
# 包含 biopython 包的 python 環境
conda create --name py_env_for_test biopython
# 基於 python 3
# 創建一個名爲 py3_env_for_test
# 包含 Astroid 和 Babel 包的 python 環境
conda create --name py3_env_for_test Astroid Babel
查看已經存在的 python 環境
# 查詢結果中,通過星號“*”標識當前被激活的 python 環境
conda info --envs
通過 python 環境名激活、切換 python 環境
# 激活(切換到)名爲 py_env_for_test 的 python 環境
source activate py_env_for_test
# 激活(切換到)名爲 py3_env_for_test 的 python 環境
source activate py3_env_for_test
# 激活(切換到)系統 python 環境(退出當前環境)
source deactivate
創建已有 python 環境的副本
# 創建 py_env_for_test 環境的副本,起名爲 py_env_for_test_clone
conda create --name py_env_for_test_clone --clone py_env_for_test
通過 python 環境名刪除指定 python 環境
# 刪除名爲 py_env_for_test_clone 的 python 環境
conda remove --name py_env_for_test_clone --all
管理 python 環境下的 python 包
查看指定 python 環境下的所有 python 包
# 查看當前 python 環境下的所有 python 包
conda list
# 查看 py3_env_for_test 環境下的所有 python 包
conda list --name py3_env_for_test
查找安裝包
# 查找所有可被安裝的 python 及版本信息
conda search python
# 查找所有可被安裝的名爲 numpy 的 python 包及版本信息
conda search numpy
# 通過正則表達式,模糊查詢所有可被安裝的名字中包含 nump 的 python 包及版本信息
conda search '*nump*'
# 查找名爲 numpy,版本號大於等於 1.15.0 的 python 包
conda search 'numpy>=1.15.0'
# 查找所有兼容 python3.7.2 的 python 包
conda search --full --name python=3.7.2
通過 conda 向環境中添加新的 python 包
# 在當前 python 環境中添加版本號爲 11.3.3 的 mkl 包
conda insall mkl=11.3.3
# 向 py3_env_for_test 環境中,添加版本號爲 11.3.3 的 mkl 包
conda install --name py3_env_for_test mkl=11.3.3
通過 pip 向環境中添加新的 python 包
# 通過 pip,可以安裝那些無法通過 conda 安裝的 python 包
# 通過 pip 安裝包前,需要先切換到需要安裝 python 包的 python 環境
# 例:通過 pip,安裝 numpy 包
pip install numpy
刪除指定環境中的指定 python 包
# 刪除當前環境中的 mkl 包
conda remove mkl
# 刪除 py3_env_for_test 環境中的 mkl 包
conda remove --name py3_env_for_test mkl
溫馨提示
- conda 把不同版本的 python 作爲包進行管理,因此
- conda remove --name py3_env_for_test mkl 刪除的是環境下的 mkl 包
- conda remove --name py3_env_for_test --all 刪除的是環境
- conda 工具的各個參數,存在簡寫模式
- --name 的簡寫爲 -n,例
# 等價的兩條命令 conda list --name py3_env_for_test conda list -n py3_env_for_test
- --envs 的簡寫爲 -e
- 以此類推
- 善用 help,例
conda -h
conda list -h