Node.js调用Python脚本报错:如何修改python-shell的Python版本?
解决python-shell默认使用Python 2.7的问题
嘿,这个坑我之前踩过!python-shell默认会调用系统里的python命令,而很多系统里这个命令指向的是Python 2.7,这就导致你的Python 3.x语法直接报错了。要切换到Python 3其实很简单,只需要在调用时指定Python 3的可执行文件路径就行,下面给你两种具体的实现方式:
1. 单次调用时指定Python路径
在调用PythonShell.run()的时候,通过options参数传入pythonPath配置,指向你的Python 3可执行文件路径。比如:
const { PythonShell } = require('python-shell'); // 配置选项,指定Python 3的路径 const options = { pythonPath: '/usr/bin/python3' // 替换成你系统中Python3的实际路径 }; PythonShell.run('你的脚本.py', options, function (err, results) { if (err) throw err; console.log('脚本执行结果:', results); });
怎么找Python3的路径?
- 在Linux/macOS终端里输入
which python3,就能得到绝对路径 - 在Windows命令提示符里输入
where python3,会列出所有可用的Python3路径,选你需要的那个就行
如果你的系统里直接输入python3就能启动Python 3,那也可以直接写pythonPath: 'python3',不用绝对路径,这样更灵活。
2. 全局默认设置Python版本
如果你的项目里所有Python脚本都需要用Python 3,可以直接设置PythonShell的全局默认选项,这样后续所有调用都会自动使用Python 3:
const { PythonShell } = require('python-shell'); // 全局设置默认Python路径 PythonShell.defaultOptions.pythonPath = '/usr/bin/python3'; // 之后的调用就不用再单独指定了 PythonShell.run('你的脚本.py', function (err, results) { if (err) throw err; console.log('脚本执行结果:', results); });
最后提醒一下:确保你的系统已经安装了Python 3,并且指定的路径是正确的,不然会出现“找不到可执行文件”的错误哦。
内容的提问来源于stack exchange,提问作者Neel Kapadia
相关产品推荐
相关产品推荐

