如何指定在npm python shell node.js中使用哪个版本的python
我想使用pythonshell调用js文件中的python脚本。但是,脚本需要python3,并且始终使用py2,而我的本地开发同时安装了py2和py3。我如何指定它使用python3呢如何指定在npm python shell node.js中使用哪个版本的python,python,node.js,heroku,node-modules,Python,Node.js,Heroku,Node Modules,我想使用pythonshell调用js文件中的python脚本。但是,脚本需要python3,并且始终使用py2,而我的本地开发同时安装了py2和py3。我如何指定它使用python3呢 app.get('/run_py', (req, res)=>{ var myPythonScriptPath = 'script.py'; // Use python shell var PythonShell = require('python-shell'); va
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])
导入系统
如果系统版本信息[0]<3:
引发异常(“必须使用Python 3”)
打印('running test.py')
打印(系统版本信息[0])
在本地运行时,它总是使用python 2.7
此外,当我将代码推送到heroku服务器时,该服务器默认使用python 3.6。脚本运行得很好
有什么见解吗?求你了
编辑:我看到您可以在PythonShell.run中指定python路径作为参数。。但是如果不同的平台说heroku和我的本地机器有不同的python路径怎么办?根据,您可以在PythonShell
选项中指定python解释器路径。您需要做两件事:
pip安装python3
或类似的东西)/usr/bin/env python3
/usr/bin/env python3
。有关跨系统的解决方案,请参阅。根据,您可以在PythonShell
选项中指定python解释器路径。您需要做两件事:
pip安装python3
或类似的东西)/usr/bin/env python3
编辑:为了响应您的编辑,如果您的两个节点服务都在Linux上运行,您应该能够使用
/usr/bin/env python3
。有关跨系统的解决方案,请参阅。更新:自2018年8月7日起,python3是默认的pythonPath
更新:截至2018年8月7日,python3是默认的pythonPath
谢谢,但是如果服务器的python路径与我的本地计算机不同呢?对不起,我是个新手,不知道最佳做法是什么..请参见我的编辑:)您可以使用
env
指向一条路径,该路径将在两个系统上正确解析。看起来我可以简单地使用选项={pythonPath:'python3'}
你能详细介绍一下如何使用env
吗?比如选项={pythonPath:'/usr/bin/env python3'}
?它似乎不正确。选项={pythonPath:'python3'}
和选项={pythonPath:'/usr/bin/env python3'}
可以,后者更明确。请参阅我在编辑中链接的SO响应!谢谢!但是如果服务器的python路径与我的本地计算机不同,该怎么办?抱歉,我是新手,我不知道最佳做法是什么..请参阅我的编辑:)您可以使用env
来指向一条在两个系统上都能正确解析的路径。看起来我可以简单地使用选项={pythonPath:'python3'}
您能详细介绍一下如何使用env
吗?像选项={pythonPath:'/usr/bin/env python3'}
?它似乎不正确。选项={pythonPath:'python3'}
和选项={pythonPath:'/usr/bin/env python3'}
都可以工作,后者更显式。查看我在编辑中链接的SO响应!