【问题标题】:How to specify which version of python to use in npm python-shell node.js如何在 npm python-shell node.js 中指定使用哪个版本的 python
【发布时间】:2020-12-08 16:26:20
【问题描述】:

我想使用 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 路径呢?

【问题讨论】:

    标签: python node.js heroku node-modules


    【解决方案1】:

    根据the python-shell documentation,可以在PythonShell选项中指定python解释器路径。您需要做两件事:

    1. 确保在您的本地系统上安装了 python3(可能需要pip install python3 或类似的东西)
    2. 更改python路径指向python3(可能只需要/usr/bin/env python3

    编辑:响应您的编辑,如果您的两个节点服务都在 Linux 上运行,您应该可以使用/usr/bin/env python3。请参阅this stackoverflow question 了解跨系统的解析。

    【讨论】:

    • 谢谢,但是如果服务器的 python 路径与我的本地机器不同怎么办?对不起,我很新,我不知道最佳做法是什么..
    • 查看我的编辑 :) 您可以使用 env 指向一个可以在两个系统上正确解析的路径
    • 看来我可以简单地使用option = {pythonPath: 'python3'}
    • 你能详细说明如何使用env吗?喜欢option = {pythonPath: '/usr/bin/env python3'} 吗?好像不太对。
    • option = {pythonPath: 'python3'}option = {pythonPath: '/usr/bin/env python3'} 都可以,后者更明确。请参阅我在编辑中链接的 SO 响应!
    【解决方案2】:

    更新:截至 2018 年 8 月 7 日,python3 是默认的 pythonPath。

    https://github.com/extrabacon/python-shell/blob/f3b64d3307d8dc15eb9c071d8aa774c1e7d5b2d7/index.ts#L94

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 2021-01-27
      • 2013-08-25
      相关资源
      最近更新 更多