我的conda常用命令、報(bào)錯(cuò)解決與技巧記錄

conda軟件是生信軟件部署重要工具。大部分的生信工具可以通過(guò)conda安裝,熟練使用conda也是生信學(xué)習(xí)的必備技能。

本文旨在記錄我常用的命令,肯定記錄的不全。而且有的內(nèi)容介紹對(duì)于新手不是很友好,如果看不懂,也別為難自己了。

本文獲?。嚎聪挛液?jiǎn)書的簡(jiǎn)介,關(guān)注后后臺(tái)回復(fù)conda筆記 即可獲取本文的pdf版本。
老規(guī)矩,免費(fèi)獲取只有7天期限。

conda安裝

https://www.anaconda.com/products/individual

  • linux版本安裝
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
bash Anaconda3-2021.11-Linux-x86_64.sh
#安裝路徑也選擇默認(rèn),兩次詢問(wèn)都選擇yes。中間的查看信息可按q跳過(guò)。

最后一次詢問(wèn)是選擇是否執(zhí)行conda init ,默認(rèn)(也就是不輸入yes直接回車)是不執(zhí)行。如果選擇不執(zhí)行,那么后面還要手動(dòng)添加conda環(huán)境變量

echo "export PATH=~/anaconda3/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

如果選擇執(zhí)行(yes),會(huì)將在.bashrc添加類似如下。

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/your/home/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/your/home/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/your/home/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/your/home/anaconda3/bin:$PATH" #添加環(huán)境變量
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

上面內(nèi)容我基本看不懂,但是體會(huì)到的用途:conda添加到環(huán)境變量;每次登錄服務(wù)器會(huì)自動(dòng)進(jìn)入base環(huán)境。

conda 配置

conda配置文件~/.condarc 。conda配置文件主要是添加源(或通道)。

常用通道biocondaconda-forge

添加國(guó)內(nèi)conda源

conda源介紹與添加

  • 清華源

https://mirror.tuna.tsinghua.edu.cn/help/anaconda/

添加源(我不太習(xí)慣官網(wǎng)的寫法,還是按自己的添加)

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/simpleitk
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch-lts
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2s
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 clean -i
  • 北外源

https://mirrors.bfsu.edu.cn/help/anaconda/

conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/simpleitk
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch-lts
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/menpo
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/msys2s
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda
conda clean -i
  • 其他源

另外還有中科大源。其中*為你需要添加的conda源

conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/*

conda源添加技巧

1)conda通道優(yōu)先級(jí)

conda通道具有優(yōu)先級(jí),最后添加的通道或者位于.condarc 文件最上方通道優(yōu)先級(jí)是最高的。這里說(shuō)的“最后添加的通道”是指通過(guò)conda config --add channels 命令添加通道。

2)添加官網(wǎng)給出的示例源之外的源

我們從https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 看到的源只是清華源的一部分,這里我稱之為“示例源”。

有點(diǎn)觀察力和好奇心的人,可能會(huì)注意到conda源的寫法,很相似,唯一不同的是最后的部分。那么,以清華源為例,共同的部分http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/ 復(fù)制到地址欄是什么界面呢?如果你還沒看過(guò),現(xiàn)在就看一眼。該頁(yè)面下的文件夾名稱即為通道名稱,如果你要添加這里面的源,例如 qiime2 ,就可以在共同地址部分后面添加qiime2 即為qiime2 的清華源通道(全寫:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/qiime2/)?;蛘哂覔?code>https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/ 下的qiime2 文件夾,復(fù)制鏈接地址,也可得到了清華源的qiime2通道,然后將其添加進(jìn).condarc 即可。

注意:conda源并不是越多越好,過(guò)多的源會(huì)減慢你的軟件安裝速度。

其它修改

1)添加其它非必需內(nèi)容

conda config --set show_channel_urls yes
conda config --set auto_activate_base true

2)有時(shí)正常添加conda源后,會(huì)有網(wǎng)絡(luò)原因的一些報(bào)錯(cuò),可以打開.condarc 嘗試按以下方法解決:

(1)刪除默認(rèn)通道

執(zhí)行完添加通道命令后,默認(rèn)通道- defaults 會(huì)自動(dòng)添加到配置文件,嘗試刪除該行即可。

(2) 修改協(xié)議

https 改為http 。對(duì)于網(wǎng)絡(luò)協(xié)議,我不懂,有無(wú)隱患也暫時(shí)不知。

如果你始終因網(wǎng)絡(luò)問(wèn)題無(wú)法正常安裝,還要考慮可能是網(wǎng)絡(luò)問(wèn)題。如果記不住ip addr show 或者ifconfig ,可以嘗試ping www.baidu.com ,網(wǎng)絡(luò)正常的話類似如下顯示。其中IP 代替了具體的ip地址

PING www.a.shifen.com (IP) 56(84) bytes of data.
64 bytes from IP (IP): icmp_seq=1 ttl=128 time=36.6 ms
64 bytes from IP(IP): icmp_seq=2 ttl=128 time=36.4 ms
64 bytes from IP (IP): icmp_seq=3 ttl=128 time=36.4 ms
^C #這里是我執(zhí)行了ctrl+c
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 36.448/36.544/36.696/0.245 ms

查看已配置的conda源

以下命令選其一即可。但是一般我選擇最后一種,前幾種命令太長(zhǎng),要么一時(shí)想不起來(lái),要么懶得敲命令。

conda config --get channels #此命令會(huì)明確標(biāo)出通道優(yōu)先級(jí),與你.condarc文件上下順序相反
conda config --show channels
conda config --show-sources
cat ~/.condarc

刪除源

conda config --remove channels
conda config --remove-key channels #換回默認(rèn)源

這個(gè)操作我一般是不用的,即使源出了問(wèn)題(清華源堵塞崩潰我已見怪不怪了),我會(huì)直接刪除.condarc 文件重新配置。

如果只是刪除某個(gè)具體的通道,可以vim打開.condarc 文件直接刪除。

我的.condarc 文件內(nèi)容(清華源)

channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
show_channel_urls: true
auto_activate_base: true

環(huán)境激活與退出

對(duì)于我來(lái)說(shuō),激活與退出環(huán)境,命令過(guò)長(zhǎng),靠手指肌肉記憶很容易出錯(cuò),我一般是使用別名。將下面內(nèi)容放入到.bashrcsource ~/.bashrc

alias condact='conda activate'
alias deconda='conda deactivate'

激活環(huán)境,選其一即可

conda activate  #進(jìn)入base環(huán)境
conda activate env_name #進(jìn)入env_name環(huán)境
condact #進(jìn)入base環(huán)境
condact env_name #進(jìn)入env_name環(huán)境
source activate env_name
source ~/your_env/bin/activate #我conda-pack 進(jìn)行環(huán)境遷移后激活your_env

退出環(huán)境,選其一即可

conda deactivate
deconda 

conda環(huán)境創(chuàng)建與刪除

環(huán)境創(chuàng)建

conda create -n env_name 

該環(huán)境位置~/anaconda3/envs/env_name/

環(huán)境刪除,選其一即可

conda remove -n env_name  --all
conda env remove --name env_name

查看當(dāng)前conda環(huán)境,選其一即可

conda env list
conda info -e
conda info --envs

環(huán)境克隆之類的命令,我暫時(shí)沒用過(guò),目前也覺得沒有太大必要。有需要的請(qǐng)移步其它教程。

軟件安裝、更新、刪除、搜索與查看

mamba是conda的提速器 ,手動(dòng)安裝或者conda安裝均可。

https://github.com/mamba-org/mamba

  • 軟件安裝
conda/mamba install fastqc
conda/mamba install -y fastqc
conda/mamba install -y fastqc=0.11.9
conda/mamba install -c bioconda -c conda-forge -y fastqc=0.11.9

也可以在創(chuàng)建環(huán)境時(shí)安裝軟件

conda create -n env_name fastqc=0.11.9 -y

conda也可以本地安裝一些軟件,但是我用不到,也沒用過(guò),不做介紹,有需要自行查閱教程。

  • 軟件更新與刪除

軟件更新與刪除我一般不使用,因?yàn)橐恍┥跑浖?huì)指定某一些特定版本的依賴軟件,隨意更新可能會(huì)破壞依賴。另外conda clean 也可以完成軟件刪除操作,不過(guò)我沒試過(guò),如有需要自行查閱資料。

  • 軟件搜索

conda安裝的軟件名稱,并不一定是官網(wǎng)給出的軟件名稱,對(duì)于不熟悉的軟件會(huì)用到搜索命令。conda軟件名稱常常是:

軟件名稱全部為小寫;

R包開頭為r-

Perl模塊開頭為perl ,全部小寫,中間的::- 代替。

常用的搜索命令

conda/mamba search fastqc
conda/mamba search fast* #搜索以fast開頭的軟件,結(jié)果不止是fastqc。
mamba repoquery search fastqc #據(jù)說(shuō)這個(gè)命令更快,但是我沒有體會(huì)到。
  • 搜索的終極大招

搜索安裝命令的終極大招https://anaconda.org/ ,在https://anaconda.org/ 界面下的搜索框中搜索即可。搜索perl模塊時(shí)注意將:: 改為- ,否則搜索不到。

  • 軟件查看

軟件安裝過(guò)多,可能不易查到需要的信息??梢允褂霉艿婪?code>grep 搜索。

conda list
conda list | grep ‘fastqc’

環(huán)境遷移

環(huán)境遷移,這里我只介紹conda-pack和yml文件兩種方法,其它方法我沒用過(guò),看上去有些麻煩,請(qǐng)自行查閱資料學(xué)習(xí)。

conda-pack完成環(huán)境遷移

這個(gè)方法我之前的“小白踩坑日記”記錄過(guò)。

$ conda activate your_env_name #進(jìn)入環(huán)境
$ conda install conda-pack -y #安裝打包環(huán)境用的軟件
$ conda pack -n your_env_name -o ~/file.tar.gz #打包環(huán)境為一個(gè)壓縮文件。

#將壓縮包file.tar.gz傳輸?shù)叫碌姆?wù)器上。
zheng 21:50:57 ~  
$ mkdir test_env && cd test_env  #新建一個(gè)文件夾test_env,將file.tar.gz上傳到該位置。

zheng 21:51:11 ~/test_env 
$ tar -zxvf file.tar.gz
$ source ./bin/activate  #激活環(huán)境 。不能用conda activate激活了。

(test_env) zheng 21:58:03 ~/test_env #注意觀察,此時(shí)的環(huán)境名稱為剛新建的文件夾test_env
$ conda-unpack  #注意觀察,會(huì)有一個(gè)小小時(shí)間的等待??梢詔ime conda-unpack看一下。
$ Trinity  #測(cè)試你打包的環(huán)境中軟件能否調(diào)用
$ source deactivate  #conda deactivate 是無(wú)法退出的。

這里需要注意的是最后環(huán)境的激活方式,是用source完成的。

遷移后環(huán)境名稱為剛新建的文件夾test_env

如果遷移后的環(huán)境,一段時(shí)間經(jīng)常用到,可以將 source ~/test_env/bin/activate 放入自己的.bashrc 的最后,使其登錄即可進(jìn)入該環(huán)境。但是大佬說(shuō)這么做有隱患,目前我還不知道具體有哪些隱患,大家慎重使用吧。大不了環(huán)境不常用之后,將其從.bashrc 刪除即可。

yml文件重現(xiàn)環(huán)境

  • 導(dǎo)出環(huán)境內(nèi)容
#導(dǎo)出環(huán)境內(nèi)容
conda env export --file your_env.yml --name env_name
#your_env.yml文件中name:env_name名字為原環(huán)境名字,各軟件版本都已明確指出。

#導(dǎo)出當(dāng)前所處環(huán)境的yml文件
conda env export > your_env.yml 
  • 重現(xiàn)環(huán)境
#創(chuàng)建一個(gè)新環(huán)境并安裝其中軟件
conda env create -f your_env.yml 
#后加-p 選項(xiàng)加參數(shù)可以指定路徑安裝。

新環(huán)境的名字為your_env.yml 中 第一行 name: 內(nèi)容。

這種安裝方式前面軟件搜索步驟,可能依賴于服務(wù)器線程數(shù)和網(wǎng)速。因?yàn)橹粠腿税惭b過(guò)一次,沒有過(guò)多測(cè)試,不是很確定。主要是想說(shuō),如果大家重現(xiàn)環(huán)境時(shí)比較慢,可能是正?,F(xiàn)象,等就行了。

注意:這種遷移方式,只會(huì)遷移conda install 安裝的軟件。所以,軟件安裝時(shí)盡量全部使用conda。

總結(jié)

沒什么好總結(jié)的,寫的目錄亂了點(diǎn),也懶得排版,只適合自己看。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 剛剛嘗試用conda管理自己用的一些生信軟件,這里記錄常用的一些命令 linux系統(tǒng)上下載并安裝conda: wg...
    阿糖胞苷_SYSU閱讀 5,775評(píng)論 1 4
  • 我們?cè)谶M(jìn)行Python開發(fā)的時(shí)候,經(jīng)常遇到需要不同版本的python環(huán)境,virtualenv可以伴我們建立不同版...
    忙碌的閑魚閱讀 888評(píng)論 0 0
  • 因?yàn)閷懻撐淖鰧?shí)驗(yàn)需要,在linux上安裝了Anaconda來(lái)管理python環(huán)境,有一些命令用的時(shí)候總會(huì)忘記,所以...
    慢半拍的小兔子閱讀 1,204評(píng)論 0 4
  • conda命令 如果希望使用conda工具來(lái)管理依賴項(xiàng)或者創(chuàng)建項(xiàng)目的虛擬環(huán)境,可以在終端或命令行提示符中使用con...
    小小楊樹閱讀 4,038評(píng)論 0 8
  • anaconda conda 常命令conda -V 檢查是否安裝以及當(dāng)前conda的版本conda list 查...
    我還是霸霸閱讀 531評(píng)論 0 2

友情鏈接更多精彩內(nèi)容