如何从NodeJS执行Python。从python获取函数中的“无效语法”

2024-10-03 23:18:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用NodeJS通过cozmoapi的pythonshell包来启动一个Python脚本。在

我的问题是当我执行nodecozmo.py从命令中编写脚本,就像它完美地工作一样。当我从node应用程序执行完全相同的脚本时,它在执行py时会给我一个语法错误。在

不知道这怎么可能是语法错误,也许pythonshell包使用了一个旧的python版本?不懂语法处理可能不懂?我试着查阅资料来源,却不明白为什么会引起这个问题。在

错误

Error:   File "nodecozmo.py", line 16
    def cozmo_program(robot: cozmo.robot.Robot):
                           ^
    SyntaxError: invalid syntax

Python脚本

^{pr2}$

节点应用程序

var PythonShell = require('python-shell');
PythonShell.run('./nodecozmo.py', function (err) {
    if (err) throw err;
    console.log('finished executing');
  });

Tags: py命令脚本node应用程序nodejsroboterr
1条回答
网友
1楼 · 发布于 2024-10-03 23:18:02

python脚本使用的是python3.5中引入的一种新语法type hintingdef语句

def cozmo_program(robot: cozmo.robot.Robot):

是说cozmo_program函数接受一个参数robot,它的类型应该是{}。在

从你的剧本开始,nodecozmo.py,从命令行运行时没有错误,则必须使用Python>;=3.5版本运行它。在

由于NodeJS返回SyntaxError,NodeJS必须运行Python版本<;3.5脚本。请注意错误消息如何直接指向冒号:

^{pr2}$

由于类型暗示是一种很好的方法,但不是必须的,因此只需删除类型提示,就可以使脚本向后兼容:

改变

def cozmo_program(robot: cozmo.robot.Robot):

def cozmo_program(robot):

相关问题 更多 >