Luk*_*ski 3 python makefile anaconda conda
我正在 Makefile 中创建 conda 环境。但是,如果已经创建了此环境,我想跳过该步骤。我如何检查以下内容:
CONDA_ENV_NAME := myname
ifeq (,$(shell which conda))
HAS_CONDA=False
else
HAS_CONDA=True
CONDA_ACTIVATE=source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate
endif
environment:
ifeq (True,$(HAS_CONDA))
@echo ">>> Detected conda, creating conda environment."
## Here I'd like to check if this environment already exists
conda env create -f environment.yml -n $(CONDA_ENV_NAME)
## ... and if the env should be activated (optional)
$(CONDA_ACTIVATE) $(CONDA_ENV_NAME)
else
@echo ">>> Install conda first."
endif
Run Code Online (Sandbox Code Playgroud)
我用以下方法解决了这个问题:
ifeq (,$(shell which conda))
HAS_CONDA=False
else
HAS_CONDA=True
ENV_DIR=$(shell conda info --base)
MY_ENV_DIR=$(ENV_DIR)/envs/$(CONDA_ENV_NAME)
CONDA_ACTIVATE=source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate
endif
environment:
ifeq (True,$(HAS_CONDA))
ifneq ("$(wildcard $(MY_ENV_DIR))","") # check if the directory is there
@echo ">>> Found $(CONDA_ENV_NAME) environment in $(MY_ENV_DIR). Skipping installation..."
else
@echo ">>> Detected conda, but $(CONDA_ENV_NAME) is missing in $(ENV_DIR). Installing ..."
conda env create -f environment.yml -n $(CONDA_ENV_NAME)
endif
else
@echo ">>> Install conda first."
exit
endif
Run Code Online (Sandbox Code Playgroud)