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`的主要内容,如果未能解决你的问题,请参考以下文章