scikit-surprise:即使pip列出了已安装的模块,Python也无法找到模块

时间:2019-02-22 16:11:58

标签: python python-import importerror

我正在尝试使用scikit-surprise模块来构建推荐系统,但是在编译时出现了错误。

我收到ImportError:无法导入名称“ Reader”错误

我的课如下

import pandas as pd
from surprise import Reader, Dataset

userReviewsFilePath ="UserReviewsFirst5000WithHeadings.csv"
ratings = pd.read_csv(userReviewsFilePath) # reading data in pandas df

ratings_dict = {'recipeID': list(ratings.recipeID),
                'rating': list(ratings.rating),
                'userID': list(ratings.userID)}
df = pd.DataFrame(ratings_dict)

reader = Reader(rating_scale=(1, 5))

data = Dataset.load_from_df(df[['recipeID', 'rating', 'userID']], reader)

pip show表示已安装1.0.6版本

3 个答案:

答案 0 :(得分:2)

我认为您的问题来自于安装...我安装了“惊喜”,并通过了您的代码,它成功了:

import pandas as pd
from surprise import Reader, Dataset
print(Reader) # or just print(surprise) if you import surprise

退出:

<class 'surprise.reader.Reader'>

首先重新安装惊喜并告诉我们。

如果您有多个版本的python,请执行以下操作:

which pip

看看您是否在使用的python版本上安装了Surprise

答案 1 :(得分:0)

我认为它位于surprise.readerhttps://surprise.readthedocs.io/en/stable/reader.html

您的代码应为:

from surprise.reader import Reader
from surprise.dataset import Dataset

编辑:我再次检查了似乎与此相反的说明,并提供了原始代码作为正确的示例。 https://surprise.readthedocs.io/en/stable/getting_started.html#getting-started

那么也许他们添加了自己的快捷方式?无论哪种方式,对不起,这似乎不是正确的解决方案。 (除非有效,在这种情况下,他们的指示可能已过时。)

编辑2:他们确实为其加上了别名,因此“来自意外导入阅读器”确实应该起作用:https://github.com/NicolasHug/Surprise/blob/master/surprise/init.py#L19

答案 2 :(得分:0)

我认为您需要做

from surprise.reader import Reader