Search code examples
batch-filecondaminiconda

Why does my batch script stop after activating a new conda env?


This is enough to reproduce the issue:

Save as test.bat

:: Create Conda env
set name=%1
conda create -n %name% python -y
activate %name%
echo "Never gets here"
:: script should continue below...

Run from cmd.

>test.bat "testname"

Output:

C:\Users\Jamie\git>test.bat testname

C:\Users\Jamie\git>set name=testname

C:\Users\Jamie\git>conda create -n testname python -y
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment C:\Users\Jamie\Miniconda2\envs\testname:

The following NEW packages will be INSTALLED:

    pip:            9.0.1-py27_1
    python:         2.7.13-0
    setuptools:     27.2.0-py27_1
    vs2008_runtime: 9.00.30729.5054-0
    wheel:          0.29.0-py27_0

#
# To activate this environment, use:
# > activate testname
#
# To deactivate this environment, use:
# > deactivate testname
#
# * for power-users using bash, you must source
#


C:\Users\Jamie\git>activate testname

(testname) C:\Users\Jamie\git>

And that's it. The echo statement doesn't execute, but there is no error message.

Why does activating the conda env halt the batch script, and is there a way around it?


Solution

  • use

    call activate %name%
    
    • I'm assuming that activate is a batch file. If you call it, processing will return after that batch is finished. Without the call, execution is transferred to activate and ends when activate ends.