在腳本里面調(diào)用conda創(chuàng)建的環(huán)境

事情源于,我在寫腳本的時候,在腳本里面插入了一句 conda activate 環(huán)境名, 然后出現(xiàn)如下的報(bào)錯提示

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

conda認(rèn)為我沒有初始化環(huán)境,我腳本是在bash環(huán)境下運(yùn)行的,我也用conda init bash初始化過。因此,問題肯定不是出在這里。

利用關(guān)鍵詞"conda activate in bash script"檢索,我找到了兩種解決方法。

方法1: 在腳本中多加一句

source $HOME/miniconda/etc/profile.d/conda.sh

注意,我的conda是安裝在家目錄下的miniconda目錄中,對于非家目錄的安裝方式,要修改 $HOME/miniconda。

方法2: 我們可以通過 conda run 來運(yùn)行給定環(huán)境下的命令,假如,我們安裝了一個環(huán)境rna-seq, 里面有一個程序叫做STAR, 我們可以隨便寫一個tmp.sh腳本,內(nèi)容為

conda run -n rna-seq STAR --help

那么,此時運(yùn)行 bash tmp.sh 就不會報(bào)錯。也就是說,你并不是一定要用conda activate 啟動環(huán)境,才能調(diào)用命令,你其實(shí)可以調(diào)用某個環(huán)境的給定指令。

方法2相對于方法1有個非常大的優(yōu)勢,那就是,如果你有多個不同python版本的環(huán)境,你不用擔(dān)心寫腳本的時候?qū)懥藛?,但是忘了寫退出。你只需要在原來的代碼前加上一句, conda run -n 環(huán)境名。

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

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

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