我用以下方法解决了这个问题:
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