shell脚本中如何启动conda激活环境[原创]

117 阅读2分钟

一般在终端通过命令行用conda命令激活虚拟环境时用如下命令:

conda activate env_name

但是如果我们在shell脚本中用这个命令激活某个环境时,会提示conda:not found,或者CondaError: Run ‘conda init‘ before ‘conda activate‘

我们在shell中要使用类似下面的命令:

source /YOUR_CONDA_PATH/bin/activate your_env

首先我们用whereis命令找一下activate的路径.

> root@server01:/data/apps# whereis activate
activate: /root/miniforge3/bin/activate

然后我们在shell中用如下命令激活某个conda环境。注意 .sh 文件第一行必须有 shebang(例如 #!/bin/bash),否则 pm2 可能不知道用哪个解释器运行。

#!/bin/bash  #用bash
source /path/to/anaconda3/bin/activate your_environment_name
echo 'conda envs is loading ......'
python yourApp.py

然后用下面命令执行脚本即可.

bash yourShell.sh   #用bash

另外,需要注意的是,在shell脚本里面激活conda环境,在命令行是看不到进入conda环境的,因为shell脚本结束之后,conda环境就结束了.不要以为shell终端没有进入conda环境就以为进入conda环境出错或异常了。

如果用pm2 守护:


1. 最简单的方法:直接运行 .sh 文件

pm2 start ./start.sh

但是要注意:

  • .sh 文件第一行必须有 shebang(例如 #!/bin/bash),否则 pm2 可能不知道用哪个解释器运行。

  • 你需要先给脚本可执行权限:

    chmod +x start.shX
    

2. 指定解释器来运行 .sh 文件

如果你的 .sh 没有可执行权限,或者想明确指定 bash 来执行:

pm2 start start.sh --interpreter bash

3. 给进程起名字(方便管理)

pm2 start start.sh --name my-script

这样你可以用:

pm2 restart my-script
pm2 stop my-script
pm2 logs my-script

4. 用 ecosystem.config.js 管理(推荐方式)

在项目目录下新建一个配置文件:

module.exports = {
  apps: [
    {
      name: "my-script",
      script: "./start.sh",
      interpreter: "bash"
    }
  ]
};

然后执行:

pm2 start ecosystem.config.js

5. 保存并开机自启(如果需要)

pm2 save
pm2 startup