Reputation: 13539
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?
Upvotes: 20
Views: 10039
Reputation: 3438
As discussed in the comment by asker @Jamie Bull himself.
I need to be in the environment to continue
In my case, to describe it more precisely, how could I activate a CONDA ENV, change to a working directory directly in one-click, or in one-command?
From a Linux background, we are more likely to complete this request by a simple one-line BASH script. I was facing the same problem with BAT file, as discussed here, CMD batch file's behavior is not that suitable for this task. Using CALL directive within BAT does not help either.
Luckily, CONDA now is packaged with PowerShell's PS1 start script, and the according shortcut left me with another choice, after a few test, it works.
My final solution is to create a Windows shortcut for my purpose, i.e, open PyTorch ENV or Tensorflow ENV in one click. I just made a copy of CONDA's package shortcut, did the edit on the copy itself, than the edited shortcut is ready to use. The screenshot will explain it well.
For PS1 script, it is finally as easy as BASH now:
# tf_env.ps1: Activate ENV and go to working directory
conda activate tf-gpu
cd C:\Tensorflow.Playground
Upvotes: 0
Reputation: 80211
use
call activate %name%
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.Upvotes: 38