首先背景是这样的:
1、python 环境下调用没有问题,如果有问题那么肯定是 named 后面的包没有安装,或是安装没有成功。至于如何安装网上有很多的教程,比如 pip /easy_install 等方式都可以去安装, 这里就不做累述。
2、对于 python 环境下没有问题时,用 java 去调用的时候出现了上述 no module named , 而此时分两种情况去看
A、如果你要部署的是 windows 的话,对于 java web 工程来说,python 的文件依赖都会去 java 的 WEB-INF 下面的 lib 下的 Lib 去找相对应的 py 文件
B、如果是 linux 的话,没特殊指定的情况下,他也会去当前工程的 WEB-INF 下面的 lib 下的 Lib 去找。
所有解决的方式就是给对应的 python 指定 lib 的目录
Properties props = new Properties();
props.put("python.home", "/usr/lib/python2.6");
再执行 PythonInterpreter 方法之前加上上面的方法,PythonInterpreter.initialize (preprops, props, s);
其中 preprops 是 Properties preprops = System.getProperties ();
s 为传递参数的字符数组 例如: String [] s = {host,port,username,password};
3、最终 java 调用 python 时会先去找 python.home 下面的 Lib 文件,这样就可以解决上面的问题。