gpt4 book ai didi

java - 使用 jython 运行带有来自 java 的参数的 python 函数

转载 作者:行者123 更新时间:2023-11-30 05:47:14 30 4
gpt4 key购买 nike

我想使用 jython 从 java 执行位于我的 python 项目之一中的 Python 函数。 https://smartbear.com/blog/test-and-monitor/embedding-jython-in-java-applications/为此目的给出了示例代码。但在我的场景中,我遇到了以下异常。

Exception in thread "main" Traceback (most recent call last): File "", line 1, in ImportError: No module named JythonTestModule

我的场景如下。

  1. 我使用 PyCharm(JythonTestModule.py) 在我的 python 项目 (pythonDev) 中创建了一个 python 模块,其中包含以下函数。

    def 平方(值):返回值*值

  2. 然后我在 java 项目 (javaDev) 中创建了一个示例 java 类并调用了 python 模块。

    public static void main(String[] args) throws PyException{
    PythonInterpreter pi = new PythonInterpreter();
    pi.exec("from JythonTestModule import square");
    pi.set("integer", new PyInteger(42));
    pi.exec("result = square(integer)");
    pi.exec("print(result)");
    PyInteger result = (PyInteger)pi.get("result");
    System.out.println("result: "+ result.asInt());
    PyFunction pf = (PyFunction)pi.get("square");
    System.out.println(pf.__call__(new PyInteger(5)));
    }

    运行此 java 方法后,java 程序会生成上述异常。我想知道这个提到的代码段有什么问题。

最佳答案

根据该问题上述评论部分的建议,我已经制定了我的问题的解决方案。下面的代码段将证明这一点。在此解决方案中,我将 python.path 设置为模块文件的目录路径。

public static void main(String[] args) throws PyException{
Properties properties = new Properties();
properties.setProperty("python.path", "/path/to/the/module/directory");
PythonInterpreter.initialize(System.getProperties(), properties, new String[]{""});
PythonInterpreter pi = new PythonInterpreter();
pi.exec("from JythonTestModule import square");
pi.set("integer", new PyInteger(42));
pi.exec("result = square(integer)");
pi.exec("print(result)");
PyInteger result = (PyInteger)pi.get("result");
System.out.println("result: "+ result.asInt());
PyFunction pf = (PyFunction)pi.get("square");
System.out.println(pf.__call__(new PyInteger(5)));
}

如果您想要使用 Jython 中的多个模块,请将 python.path 添加为所有模块的父目录路径命令检测所有模块。

关于java - 使用 jython 运行带有来自 java 的参数的 python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635092/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com