You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GraalVM的GraalPy中运行Python脚本,错误信息能否显示行号?

GraalPy错误信息显示行号的解决方案

GraalPy完全支持在错误信息中包含行号,你遇到的问题是因为直接将字符串代码传入context.eval()时,没有为这段代码指定源标识,导致GraalPy无法关联行号信息。

解决方法很简单,手动创建Source实例并指定源名称(可以是任意标识,比如自定义的脚本文件名),这样错误信息就会带上行号:

package interop;

import org.graalvm.polyglot.*;

class App {
    public static void main(String[] args) {
        try (var context = Context.create()) {
            Source source = Source.newBuilder("python", "print()\nprint()\ndef error()", "my_script.py")
                    .build();
            context.eval(source);
        } catch (PolyglotException e) {
            e.printStackTrace();
        }
    }
}

运行这段代码后,你会得到包含行号的错误提示:

SyntaxError: expected ':' at my_script.py:3

如果你的Python代码是从本地文件读取的,直接基于文件创建Source即可,GraalPy会自动处理行号:

Source source = Source.newBuilder("python", new File("your_script.py")).build();

内容的提问来源于stack exchange,提问作者Thomas Rynne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:29:58