为什么我的批处理脚本在激活新的conda env后停止了?

Jam*_*ull 10 batch-file conda miniconda

这足以重现这个问题:

另存为 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 Code Online (Sandbox Code Playgroud)

从cmd运行.

>test.bat "testname"
Run Code Online (Sandbox Code Playgroud)

输出:

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>
Run Code Online (Sandbox Code Playgroud)

就是这样.该echo语句不执行,但没有错误消息.

为什么激活conda env会停止批处理脚本,有没有办法绕过它?

Mag*_*goo 16

使用

call activate %name%
Run Code Online (Sandbox Code Playgroud)
  • 我假设这activate是一个批处理文件.如果是call这样,处理将在批次完成后返回.没有call,执行转移到activate结束时activate结束.

  • @JamieBull关于Conda,"在环境中"基本上设置了~4个环境变量.如果使用`CALL`,激活批处理文件设置的环境变量将在返回时保留.请参阅:https://paste.fedoraproject.org/paste/Rd5AW3qrqxXkTCt6Ma7Qx15M1UNdIGYhyRLivL9gydE=/raw (4认同)