t似乎可以使用&
字符来运行多个命令。
我还需要指定位于conda.sh
内部的/users/username/miniconda??/etc/profile.d/
的路径。
此文件可以复制到任何位置,例如NodeJS应用程序的根文件夹。
这是工作代码:
Windows 10
var commands = [
'C:\\anaconda\\Scripts\\activate.bat C:\\anaconda','conda activate XYZ_v0_1_env','XYZ arg1 <some_file_input> arg2 arg3 arg4 <some_file_output>',]
exec(commands.join(' & '),function(error,stdout,stderr){
console.log(error)
console.log(stdout)
console.log(stderr)
}
);
OSX
const exec = require('child_process').exec;
var conda_path = __dirname + '/conda.sh'
var commands = [
conda_path,conda_path + ' init',conda_path + ' activate XYZ_v0_1_env',stderr){
console.log(error)
console.log(stdout)
console.log(stderr)
}
);
编辑:使用spawn
而非exec
来读取流程的实时输出,即生成实时进度:
var commands = [
'C:\\anaconda\\Scripts\\activate.bat C:\\anaconda',]
var spawn_ = spawn(commands.join('&'),{ shell: true });
spawn_.stdout.on('data',function (data) {
//do something
});
spawn_.stderr.on('data',function (data) {
//do something
});
spawn_.on('exit',function (code) {
//do something
});
,
conda run
Conda提供了conda run
命令,用于在环境中执行程序或运行脚本,而无需手动激活它。在您的情况下,您只需要一个命令即可,例如
var conda_exec = "C:\\anaconda\\Scripts\\conda.exe"
var env_name = "XYZ"
var sub_cmd = "XYZ arg1 <some_file_input> arg2 arg3 arg4 <some_file_output>"
var command = [conda_exec,'run','-n',env_name,sub_cmd].join(" ")
...
请注意,conda run
当前直到最后才返回I / O结果。这意味着您将无法测量正在执行的命令的进度,并且如果期望获得较大的回报(即内存不足),则不应使用此命令。
建议:考虑命名环境XYZ_env
或什至包括版本控制(例如XYZ_v0_1_env
),以便区分环境XYZ
和{{1 }}程序。
本文链接:https://www.f2er.com/3132404.html