pip vs conda:
安裝過python包的人自然兩種管理軟件都用過,
Pip install和Conda install在Python環境中用于安裝第三方庫和軟件包,但它們在多個方面存在顯著的區別
總的來說:
pip是包管理軟件,conda既是包管理軟件,又是環境管理軟件
管理環境用conda,安裝python相關包用pip,麻煩點再用conda(在裝python包上conda比pip少)
參考:
https://mp.weixin.qq.com/s/CsiVdclmAyugNdL9T60UzQ
https://mp.weixin.qq.com/s/SbRV5rRnHbB5aStYb0MZcg
01
寫在前面
大家拿到自己的服務器后可能需要安裝很多的軟件與包(生信分析為什么要使用服務器?),Linux中許多包的安裝依賴過多、安裝復雜。而conda作為一個能夠直接安裝超過90%軟件的"管家",能夠像Windows和手機中的應用商店那樣一鍵為你解決安裝軟件的煩惱。conda 是一個開源的軟件包管理和環境管理系統,用于簡化在不同平臺上安裝、運行和管理軟件包。該工具用于支持 Python 語言,但也能夠管理非 Python 的軟件。
以下是 Conda 的一些主要特點和功能:
- 跨平臺性: Conda 可以在 Windows、Linux 和 macOS 等多個操作系統上運行,支持跨平臺的軟件包管理。
- 軟件包管理: Conda 提供了一個強大的軟件包管理系統,可以輕松安裝、更新和刪除軟件包。這些軟件包可以包含 Python 庫、工具、依賴項等。
- 環境管理: Conda 允許用戶創建、導出、列出、刪除和更新虛擬環境,以便在不同項目中隔離和管理依賴項。
- 依賴項解決: Conda 能夠自動解決和管理軟件包之間的依賴關系,確保安裝的軟件包能夠正確地工作。
- 多版本支持: Conda 允許用戶同時安裝多個版本的軟件包,并在不同的環境中使用這些版本。
- 快速的安裝: Conda 使用二進制包進行安裝,因此安裝速度較快,無需重新編譯源代碼。
- 大型軟件倉庫: Anaconda 發布了一個龐大的軟件倉庫,包含了許多常用的科學計算、數據分析、機器學習等領域的軟件包。
- 易于使用: Conda 提供了簡單的命令行接口,使用戶可以輕松地執行軟件包和環境的管理操作。
02
安裝conda
1.下載 conda 的安裝腳本(這里使用清華大學的鏡像)
cd ~ # 推薦將 conda 安裝在家目錄下
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh
如果鏈接失效自行去官網下載安裝腳本即可
2.執行conda安裝腳本
bash Miniconda3-py39_4.10.3-Linux-x86_64.sh
3.閱讀并同意conda的相關協議,不停地回車然后輸入yes再回車就安裝成功了, 執行腳本后輸入的文字的順序可以參考這個
回車
q
yes
回車
yes
4.為了讓安裝立即生效,需要執行 .bashrc 腳本,這樣會立即進入到 conda 的 base 環境下
source ~/.bashrc
5.添加官方源和國內源,這幾乎是提速 conda 的唯一方式了
# 添加官方源
conda config --add channels r # R軟件包
conda config --add channels conda-forge # Conda社區維護的不在默認通道中的軟件
conda config --add channels bioconda # 生物信息學類工具# 添加國內源頭 (選其一添加即可)
# 添加中科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes# 添加清華大學源(偶爾抽風,此時需要換其他國內源)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes# 添加阿里云源
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
6.查看 conda 源是否配置成功,可以看出各 channel 的優先級(從上到下優先級依次增加)
conda config --get channels
安裝完成!
03
使用conda
(1)虛擬環境管理
conda env list (列出虛擬環境信息)
conda create -n (創建虛擬環境)
# 命令示例
conda create -n py38 -y
conda create -n py39 python=3.9 -y # 官方推薦使用這種方式
conda create -n py39_2 -y && conda install -n py39_2 python=3.9 -y# 比較兩種創建方式有何不同,并無任何不同
diff miniconda3/envs/py39 miniconda3/envs/py39_2
可以看到,在創建環境時指定 python 版本,和創建完環境后安裝 python 的指定版本兩者導致的結果并無不同,那為什么官方推薦在創建環境時使用 python=3.9 的方式指定 python
版本呢?這是因為如果您要在該虛擬環境中使用 python,就應該在創建環境之初下載 python3.9 ,之后在這個虛擬環境中下載的其他包都會匹配 python3.9的依賴與約束。如果安裝了很多其他包之后再安裝 python3.9,處理環境依賴就會變得較為復雜,甚至導致一些不易察覺的 bug。
conda activate (進入虛擬環境)
# 命令示例
conda activate py39
conda deactivate (退出虛擬環境)
# 命令示例
conda deactivate
conda remove -n –all 刪除虛擬環境
# 命令示例
conda create -n test -y
conda env list# 刪除 test 虛擬環境
conda remove -n test --all
conda env list
導出虛擬環境
# 適用于在相同操作系統版本下 clone 虛擬環境
conda list --explicit > spec-list.txt# 適用于所有平臺之間 clone 虛擬環境,這里的平臺指的是操作系統,如win、centos、ubuntu
conda env export > environment.yml
根據導出的文件創建虛擬環境
# 代碼示例
# 根據導出包創建 env_name1 的虛擬環境
conda create -n env_name1 --file spec-list.txt
conda env create --file environment.yml
(2)channels管理
列出 conda 中配置的 channels,根據優先級從低到高的順序排列
conda config --get channels
添加 channels,添加國內的 channels 也就是我們常說的添加國內源選其一添加即可,添加太多反而會“打架”。
# 添加中科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes# 添加清華大學源(偶爾抽風,此時需要更換為其他國內鏡像源,更換國內鏡像源的教程可以查看《conda安裝教程》)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
conda-forge/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes# 添加阿里云源
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/bioconda
conda config --set show_channel_urls yes# 添加北京外國語大學源
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/# 添加鏡像源后清除一下本地軟件搜索索引
conda clean -i
刪除 channels
方法 1 (通過命令刪除):
# 首先查看 channels
conda config --get channels# 刪除指定的 channels
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --remove channels defaults
# 刪除配置的所有鏡像源conda config --remove-key channels
方法 2 (編輯 .condarc 文件刪除想要刪除 channels 對應的行)
vi ~/.condarc
安裝包時暫時添加 channels
使用 -c 指定的軟件源處于最高優先級,這可能導致一個問題,如果你已經配置好國內鏡像源,在下載對應源的軟件時可以不指定軟件源,它會自動從你配置好國內鏡像源中下載。
conda install -c bioconda presto
# 如果配置了國內鏡像源,就不用指定 channels 了,這樣會使用國內鏡像源下載,速度更快
conda install presto
換源:
上面幾個國內鏡像源沒有一個是絕對穩定的,都有可能抽風,連接不上,這時可以切換為其他國內鏡像源。下圖是中科大鏡像源不能訪問時的報錯,而且同一天阿里的鏡像源也抽風了……這時可以切換為其他國內鏡像源。
# 移除當前配置的所有鏡像源
conda config --remove-key channels
# 重新添加鏡像源,以北外的鏡像源為例
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
(3)包管理
使用 conda 安裝包之前,需要用search命令搜索 conda 包,找到安裝對應包的命令后再進行安裝,如果不能在下面的鏈接中找到安裝方法,即表明該包不能通過 conda 安裝。例如我們搜一下python試試看,返回的就是python包的名稱、對應版本及channel。
此時我們就可以指定channel安裝指定版本的python
conda install -c conda-forge python==1.0.1
conda install (安裝包)
conda 同樣也支持安裝R包,例如大名鼎鼎的R包seurat:
conda install r-seurat
04
卸載conda
聚散終有時,如果你因為磁盤容量或者其它原因需要卸載conda,可以嘗試以下方式:
conda 的卸載很方便,因為 conda 的安裝并不會污染其他系統目錄,conda 幾乎將所有數據都保存在 miniconda3 目錄下
rm -rf .conda
rm -rf .condarc
rm -rf miniconda3
然后再刪除 ~/.bashrc 文件中的 conda 初始化添加的語句,也就是刪除圖示內容:
vim ~/.bashrc
Linux中的文本刪改可以參考:Linux| 25. 文件編輯器 vim
刪完之后執行一下 .bashrc 文件。
source ~/.bashrc
參考:
https://mp.weixin.qq.com/s?__biz=MzAwMzIzOTk5OQ==&mid=2247506208&idx=1&sn=24d27bc2ff8de340b1f542610b4dc09e&chksm=9b3ca070ac4b29664600d778b077a08bcbd843c29bae65a46261f115a37292aa773fc1513a5a&token=1701013467&lang=zh_CN#rd