我想使用python-shell在js文件中调用python脚本。但是脚本需要python3并且总是使用py2,而我的本地开发同时安装了py2和3。我如何指定使用python3代替?
app.get('/run_py', (req, res)=>{
var myPythonScriptPath = 'script.py';
// Use python shell
var PythonShell = require('python-shell');
var pyshell = new PythonShell("pyscripts/test.py");
pyshell.on('message', function (message) {
// received a message sent from the Python script (a simple "print" statement)
console.log(message);
});
// end the input stream and allow the process to exit
pyshell.end(function (err) {
if (err){
throw err;
};
//console.log('finished');
});
});
我的py脚本看起来像:
import sys
if sys.version_info[0] < 3:
raise Exception("Must be using Python 3")
print('running test.py')
print (sys.version_info[0])
在本地运行时总是使用python 2.7。
此外,当我将我的代码推送到默认使用python 3.6的heroku服务器时。脚本运行得很完美......
任何见解?请?
编辑:我看到你可以在PythonShell.run中指定python路径作为参数..但是如果不同的平台说heroku和我的本地机器有不同的python路径怎么办?答案 0 :(得分:2)
根据the python-shell documentation,您可以在PythonShell
选项中指定python解释器路径。您需要做两件事:
pip install python3
或类似的东西)/usr/bin/env python3
编辑:为了响应您的编辑,如果您的两个节点服务都在Linux上运行,您应该能够使用/usr/bin/env python3
。有关跨系统的解决方案,请参阅this stackoverflow question。
答案 1 :(得分:0)
更新:截至2018年8月7日,python3是默认的pythonPath。