事情源于,我在寫腳本的時候,在腳本里面插入了一句 conda activate 環(huán)境名
, 然后出現(xiàn)如下的報錯提示
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 就不會報錯。也就是說,你并不是一定要用conda activate 啟動環(huán)境,才能調(diào)用命令,你其實(shí)可以調(diào)用某個環(huán)境的給定指令。
方法2相對于方法1有個非常大的優(yōu)勢,那就是,如果你有多個不同python版本的環(huán)境,你不用擔(dān)心寫腳本的時候?qū)懥藛樱峭藢懲顺觥D阒恍枰谠瓉淼拇a前加上一句, conda run -n 環(huán)境名
。