You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用child_process启动Python脚本时如何指定使用的Python版本

解决方案
  • 方案1:直接替换调用命令
    Mac系统默认将Python2的可执行文件映射为python命令,Python3的对应命令为python3,你可以直接修改spawnSync的第一个参数即可:
import { spawnSync } from 'child_process';

const write_questions = spawnSync('python3', ['src/write_questions.py', subject], {stdio: 'inherit'})

f-string是Python3.6及以上版本才支持的语法,切换到Python3后报错会自动解决。

  • 方案2:指定VS Code对应Python解释器的绝对路径
    如果你的设备上安装了多个Python3版本,想要精准调用VS Code里设置的3.9.6版本,可以先找到该解释器的完整可执行路径:
    打开VS Code,按下快捷键Cmd+Shift+P,搜索并选择「Python: Select Interpreter」,悬停在你正在使用的Python 3.9.6(64-bit)选项上,就能看到完整路径,比如示例路径为/usr/local/bin/python3.9,直接把路径作为第一个参数传入即可:
const write_questions = spawnSync('/usr/local/bin/python3.9', ['src/write_questions.py', subject], {stdio: 'inherit'})
  • 方案3:修改子进程的环境变量优先级
    如果你不想硬写路径,也可以在启动子进程时调整PATH的优先级,把Python3.9的目录放到系统PATH最前面:
const write_questions = spawnSync('python', ['src/write_questions.py', subject], {
  stdio: 'inherit',
  env: {
    ...process.env,
    // 把Python3.9的bin目录替换为你本地的实际路径
    PATH: `/usr/local/bin/python3.9/bin:${process.env.PATH}`
  }
})

修改完成后可以先运行测试代码验证版本是否正确:

// 测试版本输出,把第一个参数替换为你实际用的命令/路径
spawnSync('python3', ['--version'], {stdio: 'inherit'})

内容的提问来源于stack exchange,提问作者Daggerpov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 19:57:02