在启动时运行的bash脚本中激活conda环境

5

我有一个生成动画的Python脚本,它需要在一个conda环境中安装的库。我需要让这个脚本在我的电脑开机后立即运行,所以我编写了一个简短的Bash脚本,并将其添加到“启动应用程序”中。这个Bash脚本会在启动时运行,内容如下:

#!/bin/bash

conda activate myenv
cd ~/scripts
python generate.py

当我在终端上运行它时,一切正常,但每当我打开电脑时,Python脚本部分不会执行,并且当我检查错误时,我发现:
conda: command not found

然后我发现Python脚本无法运行,因为它缺少库(conda环境未激活)。我尝试在bash脚本中添加代码行,将"conda activate"替换为"source activate",我还尝试在bash脚本中添加echo ". /home/<user>/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc,将"conda"替换为/home/barrat/anaconda3/bin/conda,甚至在启动时添加whoami到bash脚本中,以确保我没有偶然成为root用户...但这些都没有起作用。非常感谢任何帮助,现在是凌晨3点,我有点绝望。
2个回答

10

您可能已经解决了这个问题,但是对于未来的观众,这对我有用:

if [ -f "/path/to/anaconda3/etc/profile.d/conda.sh" ]; then
    . "/path/to/anaconda3/etc/profile.d/conda.sh"
    CONDA_CHANGEPS1=false conda activate myenv
fi

将其替换为 source activate myenv

这对我有用。实际上很难找到这个解决方案! - Denis
如果您已经初始化了Anaconda环境并且终端以“(base)”开头,则无需使用“CONDA_CHANGEPS1=false”。 - Vitali Avagyan

0

既然您正在尝试激活环境以启动脚本,那么您也可以使用Python的subprocess模块自己制作启动脚本来执行所需的任务。

尝试创建一个名为demo.py的脚本:

import os
import system
import subprocess
import x

subprocess.run(["command name", "value"]) #for all scripts you want to execute

然后,您可以将此Python脚本放置在启动时运行。 您可以启动相当多的操作,而不会对系统速度产生明显的影响,并且始终可以通过在两个调用之间使用time.sleep()来逐个启动进程并轻松监视它。


抱歉 - 我认为你误解了。我有一个脚本想要在启动时运行 - 我的问题是我无法激活包含此脚本所需库的conda环境。 - Robbie Barrat
你尝试过将conda环境及其Python添加到操作系统的“PATH”中吗?如果无法找到conda的安装,它将无法从“python”到其库中找到任何内容。 - Ashwin Phadke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接