在shell脚本中激活conda环境

2,434 阅读1分钟

在日常炼丹过程中,希望模型训练可以后台运行,这样不用担心训练中断,本文希望给大家帮助,这篇文章主要向大家介绍解决shell脚本不能激活conda环境,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

一、问题场景

之前突发其想,既然在命令行可以通过conda activate tf激活tf的虚拟环境,那么能不能写个脚本实现呢? 费了好大劲,发现并不行,比如,新建一个con.sh脚本,里面只写一句。 我正在尝试通过bash脚本激活我的conda env.即使脚本运行正常,并且我的PATH在脚本中似乎已更改,但在脚本终止后仍会以某种方式重置.我可以从cmd行调用source activate test,它可以正常工作。

我想写个bash脚本激活Python环境, 使用train.py进行训练。

conda activate tf
python train.py

二、问题描述

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If your shell is Bash or a Bourne variant, enable conda for the current user with

    $ echo ". /home/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc

or, for all users, enable conda with

    $ sudo ln -s /home/anaconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh

The options above will permanently enable the 'conda' command, but they do NOT
put conda's base (root) environment on PATH.  To do so, run

    $ conda activate

in your terminal, or to put the base environment on PATH permanently, run

    $ echo "conda activate" >> ~/.bashrc

Previous to conda 4.4, the recommended way to activate conda was to modify PATH in
your ~/.bashrc file.  You should manually remove the line that looks like

    export PATH="/home/anaconda3/bin:$PATH"

^^^ The above line should NO LONGER be in your ~/.bashrc file! ^^^

三、解决方案

conda init bash也不行
找到.bashrc文件, 我若有所思, 粘贴了两段代码

###
 # @Descripttion: 
 # @version: 1.0
 # @Author: HopeKing
 # @Date: 2020-08-20 11:24:21
 # @LastEditors: HopeKing
 # @LastEditTime: 2020-09-14 14:48:15
 # @Software:: Visual Studio Code
 # @FilePath: train.sh
### 

__conda_setup="$(CONDA_REPORT_ERRORS=false '/home/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/home/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/home/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<
conda activate tf
CUDA_VISIBLE_DEVICES=0 python train.py

 

四、参考网址:

  1. blog.csdn.net/TQCAI666/ar…