当前位置: 首页 > 知识库问答 >
问题:

使用jython使用java中的参数运行python函数

丁光华
2023-03-14

我想使用jython执行一个Python函数,这个函数位于我的一个Java Python项目中。https://smart bear . com/blog/test-and-monitor/embedding-jython-in-Java-applications/给出了示例代码。但是在我的场景中,我得到了下面的异常。

线程“main”回溯中出现异常(最近一次调用是最后一次):文件“”中第1行,导入错误:没有名为JythonTestModule的模块

我的场景如下。

>

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

    定义平方(值):返回值*值

    然后,我在我的爪哇项目(javaDev)中创建了一个示例 Java 类,并调用了蟒蛇模块。

    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程序生成的。我想知道这个梅尼化的代码段有什么问题。

  • 共有1个答案

    谯翔
    2023-03-14

    根据这个问题上面评论部分的建议,我已经找到了这个问题的解决方案。下面的代码片段将演示。在这个解决方案中,我将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 添加为所有模块的父目录路径,以便检测所有模块。

     类似资料:
    • 我编写了一个由五个。py脚本文件组成的Python程序。我希望从Java应用程序中执行这些python脚本的主要部分。 我有什么选择?使用PythonInterperter不起作用,例如,模块不能从Jython中加载(我不希望用户为这些依赖项的工作而确定他的Python路径)。 我使用Jython的CompileAll将整个文件夹编译为。class文件。我能以某种方式嵌入这些。class文件以从J

    • 我想从java代码调用python并将参数传递给python中的函数。我已经在python中封装了一个函数。但问题是我还在python程序中导入了第三方库skLearning。当我调用测试程序并将值传递给python时,我能够运行代码。但是当我尝试在python代码中使用第三方库,例如skLearning和import时,我得到了以下错误。 我初始化了Python解释器类的对象,然后使用以下命令,

    • 问题内容: 我想从C调用Python脚本,并传递脚本中所需的一些参数。 我要使用的脚本是mrsync或多播远程同步。我通过调用以下命令从命令行进行了工作: -m是包含目标ip地址的列表。-s是包含要同步的文件的目录。-t是目标计算机上将放置文件的目录。 到目前为止,通过使用以下C程序,我设法运行了没有参数的Python脚本: 这很好。但是,我找不到如何将这些参数传递给方法的方法。 问题答案: 似乎

    • 我试图使用jython在java中执行python脚本。重要的是,我需要使用jython将命令行参数传递给脚本,例如myscript。py arg1 arg2 arg3。这里有一个类似的问题:将参数传递到Java中的Python脚本 这没有得到完全的回答(所有解决方案都不起作用)。 我的代码现在看起来像这样: 然而,这似乎没有向python脚本传递任何参数。对如何正确地做这件事有什么建议吗?这一定

    • 我正在运行一个接受一些命令行参数的Python程序。当我在Visual Studio Code中构建程序时,如何提供这些参数?

    • 本文向大家介绍Python使用多进程运行含有任意个参数的函数,包括了Python使用多进程运行含有任意个参数的函数的使用技巧和注意事项,需要的朋友参考一下 1. 问题引出 许多时候,我们对程序的速度都是有要求的,速度自然是越快越好。对于Python的话,一般都是使用multiprocessing这个库来实现程序的多进程化,例如: 我们有一个函数my_print,它的作用是打印我们的输入: def