从Java程序调用python函数会导致导入错误

时间:2018-10-12 10:34:47

标签: java python maven jython interpreter

public class PyInterpreter {

    PythonInterpreter interpreter = null;

    public PyInterpreter() {

        PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);

        this.interpreter = new PythonInterpreter();
    }

    void execfile(final String fileName){
        this.interpreter.execfile(fileName);
    }

    PyInstance createClass(final String className, final String opts)
    {
        return (PyInstance) this.interpreter.eval(className + "("+ opts+ ")");
    }

    public static void main(String args[]){

        PyInterpreter py = new PyInterpreter();

        py.execfile("hello.py");

        PyInstance hello = py.createClass("Hello", "None");

        hello.invoke("run");

    }

}

这是一个Maven项目,因此我添加了jython依赖项(2.7.0)。当我尝试执行main方法时,它显示:

线程“主”中的异常ImportError:无法导入站点模块及其依赖项:没有名为site的模块 确定以下属性是否正确:   * sys.path:['C:\ Users \ narendrar \ .m2 \ repository \ org \ python \ jython \ 2.7.0 \ Lib',' classpath ',' pyclasspath /']     此属性可能包含错误的目录,例如来自CPython的目录   * sys.prefix:C:\ Users \ narendrar.m2 \ repository \ org \ python \ jython \ 2.7.0     尽管可以通过系统属性python.home设置此属性,     通常会根据Jython jar文件的位置自动确定

P.S-我已经从stackoverflow本身复制了此代码以进行测试。

0 个答案:

没有答案