【问题标题】:Activating conda environment in bash script that runs on startup在启动时运行的 bash 脚本中激活 conda 环境
【发布时间】:2019-02-01 11:11:09
【问题描述】:

所以我有一个生成动画的 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”,我尝试将 echo ". /home/<user>/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc 添加到 bash 脚本,将“conda”替换为 /home/barrat/anaconda3/bin/conda,甚至添加 whoami到启动时运行的 bash 脚本,以确保我没有偶然神奇地成为 root ......这些都没有奏效。我会真的感谢任何帮助。现在是凌晨 3 点,我有点绝望。

【问题讨论】:

    标签: python bash conda startup environment


    【解决方案1】:

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

    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

    添加这个而不是conda activate myenv

    【讨论】:

    • 这对我有用。其实很难找到这个解决方案!
    • 没有CONDA_CHANGEPS1=false,如果你已经启动了anaconda env,用(base)启动你的终端
    【解决方案2】:

    当您尝试激活环境来启动脚本时,您也可以使用 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 环境。
    • 您是否尝试过将 conda 环境和它的 python 添加到您的操作系统的PATH?如果它找不到 conda 的安装,它将无法找到从 python 到它的库的任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多