jep在java中使用scikit模型

时间:2016-07-06 12:04:02

标签: java python-2.7 machine-learning scikit-learn jepp

我使用jep在java中运行python脚本,我基本上需要运行使用scikit包的脚本。但是当我试图跑步时,它显示我的错误,这是我无法理解的。

这是我程序中的一段代码, Jep jep = new Jep(); jep.eval(" import sklearn");

它显示了以下错误,但sklearn在python中运行得非常好。 2016年7月6日下午5:31:50 JepEx主要 严重:空 jep.JepException:jep.JepException :: /usr/local/lib/python2.7/dist-packages/sklearn/__check_build/_check_build.so:undefined symbol:_PyThreadState_Current

/usr/local/lib/python2.7/dist-packages/sklearn/check_build的内容: setup.py __init .pyc _check_build.so 构建 init .py setup.pyc

似乎scikit-learn还没有正确构建。

如果你已经安装了scikit-learn from source,请不要忘记 在使用它之前构建包:运行python setup.py install或 源目录中的make

如果您使用过安装程序,请检查它是否适合您的安装程序 Python版本,您的操作系统和您的平台。     在jep.Jep.eval(Jep.java:485)     在JepEx.executeCommand(JepEx.java:26)     在JepEx.main(JepEx.java:38) 引起:jep.JepException :: /usr/local/lib/python2.7/dist-packages/sklearn/__check_build/_check_build.so:undefined symbol:_PyThreadState_Current

/usr/local/lib/python2.7/dist-packages/sklearn/check_build的内容: setup.py __init .pyc _check_build.so 构建 init .py setup.pyc

似乎scikit-learn还没有正确构建。

如果你已经安装了scikit-learn from source,请不要忘记 在使用它之前构建包:运行python setup.py install或 源目录中的make

如果您使用过安装程序,请检查它是否适合您的安装程序 Python版本,您的操作系统和您的平台。     在/usr/local/lib/python2.7/dist-packages/sklearn/check_build/__init.raise_build_error(init.py:41)     at /usr/local/lib/python2.7/dist-packages/sklearn/check_build/__init.(init.py:46)     在/usr/local/lib/python2.7/dist-packages/sklearn/init。( init .py:56)

2 个答案:

答案 0 :(得分:1)

_PyThreadState_Current错误意味着它使用了错误的Python。您应该能够通过在启动进程之前将PATH和LD_LIBRARY_PATH设置为要使用的python / bin和python / lib目录(以及构建Jep和sklearn)来修复它。这将确保Python,Jep和sklearn都使用相同的库。

如果这不起作用,Jep或sklearn可能使用不同版本的Python构建,而不是你正在运行。

答案 1 :(得分:0)

我们遇到了同样的问题。
我们认为这是一个构建问题,因为重建scikit-learn没有解决,我们最终使用scikit-learn使用预构建的Anacoda2