Skip to main content
 首页 » 编程设计

python之NodeJS : Run python script in conda environment

2024年01月29日59unruledboy

我有很多 python 脚本,每个脚本都有自己的依赖项。
我为每个 python 脚本创建 conda 环境并安装依赖项。

我尝试了很多方法,如下所示

尝试过 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); 
}); 

尝试过 2

const command = [ 
  `conda activate ${environmentName}`, 
  `python ${pythonScript}` 
] 
  .map(v => `(${v})`) 
  .join(' && '); 
 
const pythonProcess = childProcess.spwan(`bash -lc "${command}"`, { shell: true }); 

尝试了 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 }); 

但是,在Python脚本中,conda环境没有启用(只是启用了默认的conda环境)。

如何在nodejs中的特定conda环境中运行python脚本?

请您参考如下方法:

conda activate 命令是一个 shell 函数,而不是真正的 CLI,因此如果不首先以交互模式启动 shell,则该命令不可用(假设您之前运行过 conda init) >)。尝试使用 conda run 代替。在你的第一个例子中,我认为它会是这样的

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

这使得人们能够在环境中执行命令,而无需手动激活环境。