首页 > 解决方案 > 成功安装 python-weka-wrapper 后无法使用 weka.core 模块“没有名为'weka.core'的模块”

问题描述

我已经安装了 python-weka-wrapper 及其所有依赖项,如下面的命令所示:

sudo -H pip3 install python-weka-wrapper3
Requirement already satisfied: python-weka-wrapper3 in /usr/local/lib/python3.6/dist-packages/python_weka_wrapper3-0.1.7-py3.6.egg
Requirement already satisfied: javabridge>=1.0.14 in /usr/local/lib/python3.6/dist-packages (from python-weka-wrapper3)
Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages/numpy-1.17.0-py3.6-linux-x86_64.egg (from python-weka-wrapper3)

但是,当我尝试导入weka.core.converters时,出现以下错误: No module named 'weka.core'. 此外,我可以在目录中找到所有这些模块

/usr/local/lib/python3.6/dist-packages/python_weka_wrapper3-0.1.7-py3.6.egg/weka

我也可以用python2.7导入weka.core.converters,但是我真的需要用python3。

我的机器信息:操作系统:Ubuntu 18.0.4

蟒蛇:3.6.8 & 2.7.15

标签: python-3.xwekaubuntu-18.04

解决方案


我不确定您在安装中做错了什么,但这里是我为Python 2.73.6安装python-weka-wrapper执行的步骤,在新安装的(并且完全是最新的)上Ubuntu 18.04.1:

首先,确保已经pip安装并且可以编译源代码:

sudo apt-get install python-pip python3-pip virtualenv build-essential

虽然推荐使用Oracle JDK,但您也可以让它与 OpenJDK 一起使用,只需确保也安装源:

sudo apt-get install openjdk-8-source openjdk-8-jdk

我不是Anaconda的忠实粉丝,因为我觉得它太过分了,尤其是因为virtualenv它以更精简、更清洁和更快的方式做事。如果您不再需要这些虚拟环境,下面的说明会创建目录(pww27以及在您的当前目录中),您可以简单地删除这些目录。pww36但是,我还在下面列出了有关如何使用 Anaconda 的说明。

每个虚拟环境都会运行一个测试命令:导入jvm模块,启动和停止 JVM,使用python -c "...", 检查环境是否正常工作。此命令将生成类似于以下内容的输出(当然,路径会有所不同):

DEBUG:weka.core.jvm:Adding bundled jars
DEBUG:weka.core.jvm:Classpath=['/home/fracpete/pww36/lib/python3.6/site-packages/javabridge/jars/rhino-1.7R4.jar', '/home/fracpete/pww36/lib/python3.6/site-packages/javabridge/jars/runnablequeue.jar', '/home/fracpete/pww36/lib/python3.6/site-packages/javabridge/jars/cpython.jar', '/home/fracpete/pww36/lib/python3.6/site-packages/weka/lib/python-weka-wrapper.jar', '/home/fracpete/pww36/lib/python3.6/site-packages/weka/lib/weka.jar']
DEBUG:weka.core.jvm:MaxHeapSize=default
DEBUG:weka.core.jvm:Package support disabled

好的,让我们创建虚拟环境并测试它们:

1. Python 2.7的虚拟环境(virtualenv):

virtualenv -p /usr/bin/python2.7 pww27
pww27/bin/pip install numpy
pww27/bin/pip install javabridge
pww27/bin/pip install python-weka-wrapper
pww27/bin/python -c "import weka.core.jvm as jvm; jvm.start(); jvm.stop()"

2. Python 3.6的虚拟环境(virtualenv):

virtualenv -p /usr/bin/python3.6 pww36
pww36/bin/pip install numpy
pww36/bin/pip install javabridge
pww36/bin/pip install python-weka-wrapper3
pww36/bin/python -c "import weka.core.jvm as jvm; jvm.start(); jvm.stop()"

3. Python 2.7(anaconda3-2019.07)的虚拟环境:

conda create -n pww27 python=2.7
conda activate pww27
pip install numpy
pip install javabridge
pip install python-weka-wrapper
python -c "import weka.core.jvm as jvm; jvm.start(); jvm.stop()"
conda deactivate

4. Python 3.6(anaconda3-2019.07)的虚拟环境:

conda create -n pww36 python=3.6
conda activate pww36
pip install numpy
pip install javabridge
pip install python-weka-wrapper
python -c "import weka.core.jvm as jvm; jvm.start(); jvm.stop()"
conda deactivate

推荐阅读