Makefile不能使用`conda activate`

问题描述 投票:4回答:2

我需要在makefile中激活一个conda环境才能运行一些python脚本,但是,每当我尝试运行conda activate env_name时,我都会收到以下消息:

CommandNotFoundError:您的shell未正确配置为使用'conda activate'。如果您的shell是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的基(root)环境放在PATH上。为此,请运行

$ conda activate

在您的终端中,或永久地将基础环境置于PATH上,运行

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

在conda 4.4之前,激活conda的推荐方法是修改〜/ .bash_profile文件中的PATH。您应该手动删除看起来像的行

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

^^^以上行不应该在你的〜/ .bash_profile文件中! ^^^

我已经尝试通过在顶部添加SHELL := /bin/zsh来更改makefile的shell,但这并不能解决问题。另外,我需要这个makefile能够使用默认shell为计算机运行(我的一些队友使用zsh,其他人使用bash)。似乎无论我做什么,我都无法让conda activate在makefile中工作。

我能做些什么才能让它发挥作用,或者这是不可能的?

python makefile anaconda conda
2个回答
1
投票

经过一番搜索后,我想出了将这个模式添加到我的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
投票

conda activate等设置了环境变量。但是,GNU Make会在新生成的shell中调用每行配方。你需要在食谱的每一行调用conda activate

更好的方法是让makefile执行conda activate,然后在新激活的环境中重新运行自己,然后再构建目标。

© www.soinside.com 2019 - 2024. All rights reserved.