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

使用jython的java有错误的python版本

农均
2023-03-14

我试图使用java通过jython.jar运行python函数。我使用的是一个从web下载的python模块,它需要python 2.6或更高版本。我很确定我的python版本是2.7.2。但是,当我尝试运行java程序时,它继续报告检测到python 2.5。我如何解决这个问题?

我的代码是:

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       ...
                //cmd
                String command = "\"xml\\" + name2 + "\"";
                PythonInterpreter python = new PythonInterpreter(null, new PySystemState());
                PySystemState sys = Py.getSystemState();
                sys.path.append(new PyString("C:\\Python27\\Lib\\site-packages"));
                python.execfile("work1.py");
            }
        }
    }
}

而错误是:

Exception in thread "main" Traceback (most recent call last):   File "work1.py", line 8, in <module>
    import networkx as nx   File "C:\Python27\Lib\site-packages\networkx\__init__.py", line 39, in <module>
    raise ImportError(m % sys.version_info[:2]) ImportError: Python version 2.6 or later is required for NetworkX (2.5 detected). Java Result: 1

共有1个答案

龚运乾
2023-03-14

您需要使用Jython 2.7b3,2.7 beta增加了与CPython 2.7...http://comments.gmane.org/gmane.comp.lang.jython.devel/6145

2.7beta4将于7月推出,之后将冻结功能。我建议您加入python-dev邮件列表,以了解新版本。希望这能有所帮助

 类似资料:
  • 这里是一个示例代码,重现我得到的错误,也得到一个工作示例从您的有益的答复! (好的,添加一个关于从生成的Python/Jython结果映射回Java对象的其他问题) (@Joonas,对不起,我修改了我的代码,现在我无法返回到我以前的错误) Python部分:(mymodule.py) 编辑: 部分回答我自己,对于内部的问题(内部评论): (实际上我觉得我的答案和代码很难看,但它工作,似乎可以取消

  • 我想使用jython执行一个Python函数,这个函数位于我的一个Java Python项目中。https://smart bear . com/blog/test-and-monitor/embedding-jython-in-Java-applications/给出了示例代码。但是在我的场景中,我得到了下面的异常。 线程“main”回溯中出现异常(最近一次调用是最后一次):文件“”中第1行,导

  • 我使用bin/spark-ec2脚本设置了一个spark ec2集群。当我ssh到主节点并在一个示例程序上运行spark-submit时,我看到来自所有执行器的以下错误,每个执行器都标记为failed: 奇怪的是spark为什么要寻找Java-1.7.0-OpenJDK-1.7.0.85.x86_64。我将JAVA_HOME设置为:/usr/lib/jvm/jre-1.8.0-openjdk。我甚

  • 我的Jython脚本调用了一些我用Java编写的代码(因为我更喜欢Java多线程)。现在,我需要从Java调用一个Jython方法(否则我必须用Java重写它)。 从Jython中驱动Java很容易,设置Java是主程序,Jython是从程序也很简单,但如何设置它以使它们能够相互调用并不明显。 官方文档包含了一篇关于这一切的非常长的文章:第10章:Jython和Java集成,这使得这项任务乍一看似

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

  • 当我尝试使用以下方法创建功能测试时: 我得到了这个错误,因为Spock试图使用错误的Groovy版本: 编译GenerateAsyncController.Groovy时出错:启动失败:无法实例化在jar中指定的全局转换类org.spockframework.compiler.spockTransform:file://users/reinaldoluckman/.gradle/caches/mo