Makefile не может использовать `conda activ` - PullRequest
0 голосов
/ 19 ноября 2018

Мне нужно активировать среду conda в моем make-файле, чтобы запустить некоторые сценарии Python, однако всякий раз, когда я пытаюсь запустить conda activate env_name, я получаю следующее сообщение:

CommandNotFoundError: YourОболочка не была правильно настроена для использования «conda activ».Если ваша оболочка - Bash или вариант Bourne, включите conda для текущего пользователя с помощью

$ echo ". /Users/MY_USERNAME/anaconda3/etc/profile.d/conda.sh" >> ~/.bash_profile

или, для всех пользователей, включите conda с помощью

$ sudo ln -s /Users/MY_USERNAME/anaconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh

.команда 'conda', но они НЕ помещают базовую (корневую) среду conda в PATH.Для этого запустите

$ conda activate

в своем терминале или навсегда включите базовую среду в PATH, запустите

$ echo "conda activate" >> ~/.bash_profile

До conda 4.4 рекомендуемый способ активации conda былизменить PATH в вашем файле ~ / .bash_profile.Вы должны вручную удалить строку, которая выглядит как

export PATH="/Users/MY_USERNAME/anaconda3/bin:$PATH"

^^^. Вышеприведенная строка НЕ ​​ДОЛЖНА быть в вашем файле ~ / .bash_profile!^^^

Я попытался изменить оболочку для make-файла, добавив SHELL := /bin/zsh вверху, но это не решает проблему.Кроме того, мне нужен этот make-файл, чтобы он мог работать с любой оболочкой по умолчанию для компьютера (некоторые из моих товарищей по команде используют zsh, другие используют bash).Кажется, что независимо от того, что я делаю, я не могу заставить conda activate работать в make-файле.

Что я могу сделать, чтобы заставить его работать, или это невозможно?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

После небольшого поиска я добавил этот шаблон в свой Makefile, чтобы conda activate заработал.Другие могут упростить.

# Need to specify bash in order for conda activate to work.
SHELL=/bin/bash
# Note that the extra activate is needed to ensure that the activate floats env to the front of PATH
CONDA_ACTIVATE=source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate

py3build:
    ($(CONDA_ACTIVATE) py3.6 ; python setup.py build )
0 голосов
/ 20 ноября 2018

conda activate среди прочего устанавливаются переменные окружения.Однако GNU Make вызывает каждую строку рецепта во вновь созданной оболочке.Вам нужно будет вызывать conda activate в каждой строке рецепта.

Лучше всего, чтобы make-файл выполнил conda activate, а затем снова запустил себя во вновь активированной среде и только после этого строил свои цели.

...