1

我正在尝试开发一个简单的 Java 应用程序,我希望它使用一些使用 Jython 的 Python 代码。我正在尝试从文件运行 python 方法并收到此错误:

ImportError: cannot import name testFunction

只是尝试一个简单的例子,所以我可以看到问题出在哪里。我的python文件test.py是这样的:

def testFunction():
    print("testing")

还有我的 Java 类:

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("path_to_file\\test.py");

interpreter.exec("from test import testFunction");

所以它可以正确地找到模块,但表现得就像里面没有调用函数testFunction一样。

4

1 回答 1

1

执行脚本文件如下。

interpreter.execfile("path/to/file/test.py");

如果您在脚本文件中声明了函数,那么在执行上述语句后,您将可以从程序中执行这些函数,如下所示。

interpreter.exec("testFunction()");

因此,您不需要任何导入语句。

完整的示例代码:

package jython_tests;

import org.python.util.PythonInterpreter;

public class RunJythonScript2 {
    public static void main(String[] args) {
        try (PythonInterpreter pyInterp = new PythonInterpreter()) {
            pyInterp.execfile("scripts/test.py");
            pyInterp.exec("testFunction()");
        }
    }
}

脚本:

def testFunction():
    print "testing"

输出:

testing
于 2020-06-19T07:54:16.123 回答