Команда Conda работает в командной строке, но не в скрипте bash

1

мой anaconda (4.5.4) работает отлично, пока я просто использую его через терминал linux (оболочка bash). Однако выполнение команд conda в сценарии bash вообще не работает.

Скрипт test.sh содержит следующие строки:

#!/bin/bash
conda --version
conda activate env

Теперь, запуск bash test.sh приводит к ошибке test.sh: line 2: conda: command not found test.sh: line 3: conda: command not found

Как рекомендовано для версии anaconda> 4.4 мой.bashrc не содержит

export PATH="/opt/anaconda/bin:$PATH",

но

. /opt/anaconda/etc/profile.d/conda.sh

Спасибо.

  • 2
    Это связано: unix.stackexchange.com/questions/65751/… . Начиная с conda 4.4, conda определяется как функция bash, больше не является исполняемым файлом.
  • 1
    Твой намек вел меня в правильном направлении. Спасибо!
Теги:
anaconda
conda

2 ответа

1
Лучший ответ

Я решил проблему благодаря комментарию @darthbith.

Поскольку conda является функцией bash, а функции bash не могут быть переданы в независимые оболочки (например, открываются с помощью сценария bash), нужно добавить строку

source /opt/anaconda/etc/profile.d/conda.sh

к сценарию bash перед вызовом команд conda. В противном случае bash не будет знать о conda.

  • 0
    Это сработало отлично! Благодарю. Моя была в /home/ubuntu/miniconda3/etc/profile.d/conda.shonda.sh .
  • 0
    есть ли способ распространять это? Мой bash-скрипт запускает другие bash-скрипты, которые тоже хотят использовать conda. Нужно ли включать этот вызов в каждый из них?
-2

do sudo ln -s/home/<user>/miniconda3/etc/profile.d/conda.sh/etc/profile.d/conda.sh и повторите попытку. Это должно активировать conda для всех пользователей permenantly

источник

  • 0
    Спасибо, но я не являюсь администратором удаленного сервера, над которым я работаю. И конда прекрасно работает в терминале, но не в скрипте bash. Via . /opt/anaconda/etc/profile.d/conda.sh Я уже активировал conda для себя.
  • 0
    просто conda: command not found предполагает, что она не активирована. вероятно, conda.sh не выполняет свою работу. Ах, а между / opt / ... и точкой в начале не должно быть пробела.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню