Makefile不能使用`conda activate`

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Makefile不能使用`conda activate`相关的知识,希望对你有一定的参考价值。

我需要在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中工作。

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

答案

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

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

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

以上是关于Makefile不能使用`conda activate`的主要内容,如果未能解决你的问题,请参考以下文章

makefile能不能接受输入参数

conda/pip 为啥现在国内镜像不能用了

xmake v2.5.3 发布,支持构建 linux bpf 程序和 Conda 包集成

anaconda 不一样的conda命令

解决powershell无法使用conda虚拟环境问题

linux为不能上网的服务器设置代理,pip,wget,conda...