简体   繁体   English

NodeJS:在 conda 环境中运行 python 脚本

[英]NodeJS: Run python script in conda environment

I have a lots of python scripts and each has own dependency.我有很多 python 脚本,每个脚本都有自己的依赖项。
And I create conda environment to each python script and install dependency too.我为每个 python 脚本创建 conda 环境并安装依赖项。

And I tried many ways like below我尝试了很多方法,如下所示

Tried 1试过 1

const childProcess = require('child_process');

const pythonScript = 'test.py';
const environmentName = 'test';

const command = [
  `conda activate ${environmentName}`,
  `python ${pythonScript}`
]
  .map(v => `(${v})`)
  .join(' && ');

const pythonProcess = childProcess.spwan(command, { shell: true });

pythonProcess.stdin.on('data', (data) => console.log(data.toString()));
pythonProcess.stderr.on('data', (data) => console.error(data.toString()));

pythonProcess.on('close', (code) => {
  console.log('Process Exited:', code);
});

Tried 2试过 2

const command = [
  `conda activate ${environmentName}`,
  `python ${pythonScript}`
]
  .map(v => `(${v})`)
  .join(' && ');

const pythonProcess = childProcess.spwan(`bash -lc "${command}"`, { shell: true });

Tried 3试过 3

const command = [
  `source /opt/conda/etc/profile.d/conda.sh`,
  `conda activate ${environmentName}`,
  `python ${pythonScript}`
]
  .map(v => `(${v})`)
  .join(' && ');

const pythonProcess = childProcess.spwan(`bash -lc "${command}"`, { shell: true });

But, in python script, conda environment doesn't enabled (just enabled default conda environemnt).但是,在 python 脚本中,没有启用 conda 环境(只是启用了默认的 conda 环境)。

How can I run python script in specific conda environment in nodejs?如何在nodejs的特定conda环境中运行python脚本?

The conda activate command is a shell function, not a true CLI, so it's not available without first launching a shell in interactive mode (assuming you have previously run conda init ). conda activate命令是一个 shell 函数,而不是一个真正的 CLI,因此如果不首先以交互模式启动一个 shell(假设您之前运行过conda init ),它就无法使用。 Try using conda run instead.尝试改用conda run In your first example, I think it would be something like在你的第一个例子中,我认为它会是这样的

const command = `conda run -n ${environmentName} python ${pythonScript}`

This enables one to execute commands in an environment without having to manually activate the environment.这使人们能够在环境中执行命令而无需手动激活环境。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM