19

这足以重现该问题:

另存为test.bat

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

从 cmd 运行。

>test.bat "testname"

输出:

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>

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

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

4

3 回答 3

31

利用

call activate %name%
  • 我假设这activate是一个批处理文件。如果你call这样做,处理将在该批次完成后返回。如果没有call, 执行将转移到activate并在结束时activate结束。
于 2017-03-09T11:00:26.530 回答
0

正如提问者@Jamie Bull 本人在评论中所讨论的那样。

我需要在环境中才能继续

在我的情况下,更准确地描述它,我如何激活 CONDA ENV,直接通过一键或一键切换到工作目录?

从 Linux 的背景来看,我们更有可能通过一个简单的一行 BASH 脚本来完成这个请求。我在使用 BAT 文件时遇到了同样的问题,正如这里所讨论的,CMD 批处理文件的行为并不适合这项任务。在 BAT 中使用 CALL 指令也无济于事。

幸运的是,CONDA 现在与 PowerShell 的 PS1 启动脚本一起打包,相应的快捷方式让我有了另一个选择,经过几次测试,它可以工作了。

我的最终解决方案是为我的目的创建一个 Windows 快捷方式,即一键打开 PyTorch ENV 或 Tensorflow ENV。我刚刚制作了 CONDA 的包快捷方式的副本,对副本本身进行了编辑,然后编辑的快捷方式就可以使用了。截图会很好的解释。

CONDA ENV 的 windows 快捷方式激活

对于 PS1 脚本,它现在终于像 BASH 一样简单了:

# tf_env.ps1: Activate ENV and go to working directory
conda activate tf-gpu
cd C:\Tensorflow.Playground
于 2021-08-24T02:31:45.807 回答
-2

.bat尝试在文件末尾添加新行

于 2017-03-09T10:50:41.293 回答