Активация среды conda в bash-скрипте, который запускается при запуске - PullRequest
0 голосов
/ 01 февраля 2019

Итак, у меня есть скрипт на python, который генерирует анимацию, и для него требуются библиотеки, которые есть у меня в среде conda.Мне нужно запустить этот скрипт, как только мой компьютер включится, поэтому я написал короткий скрипт bash, который я добавил в «автозагрузку приложений».Этот скрипт bash запускается при запуске и выглядит следующим образом:

#!/bin/bash

conda activate myenv
cd ~/scripts
python generate.py

Когда я сам запускаю это в терминале, это нормально, но всякий раз, когда я включаю компьютер, часть скрипта на python не выполняетсяи когда я проверяю ошибки, я нахожу:

conda: command not found

и затем я также вижу, что скрипт python не запускается, потому что отсутствуют библиотеки (из среды conda не активируется)

Я пыталсядобавляя строки в скрипт bash, заменяя «conda activ» на «source activ», я попытался добавить echo ". /home/<user>/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc в скрипт bash, заменив «conda» на /home/barrat/anaconda3/bin/conda и даже добавив whoami в скрипт bash, который запускаетсяпри запуске, чтобы убедиться, что я случайно не получил root-права ... ничего из этого не сработало.Я бы действительно был бы признателен за любую помощь.Сейчас 3 часа ночи, и я немного в отчаянии.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Возможно, вы уже решили проблему, но для будущих зрителей это сработало для меня:

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.

0 голосов
/ 01 февраля 2019

Так же, как вы пытаетесь активировать среду для запуска ваших скриптов, вы также можете создать сам скрипт запуска для выполнения желаемой задачи, используя модуль subprocess из python.

Попробуйте создать скрипт 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() между двумя вызовами.

...