无法导入我的util模块

时间:2015-06-22 23:08:27

标签: python scikit-learn pickle joblib

我使用sklearn.externals.joblib将分类器模型持久保存到磁盘上,实际上在较低级别使用pickle模块。

我创建了一个名为CountVectorizer的自定义StemmedCountVectorizer类,并将其保存在util.py中,然后在脚本中用它来保存模型

import util

from sklearn.externals import joblib

vect = util.StemmedCountVectorizer(stop_words='english', ngram_range=(1,1))

bow = vect.fit_transform(sentences)

joblib.dump(vect, 'vect.pkl') 

这是我使用Flask的项目结构:

   |- sentiment/
     |- run.py
     |- my_app/
       |- analytic/
         |- views.py
         |- util. py
         |- vect.pkl

我使用python run.py运行应用并尝试在joblib.load中使用views.py加载持久对象,但它不起作用,我导入了util模块但我收到了错误:

ImportError: No module named util

任何人都能解决这个问题吗?感谢

1 个答案:

答案 0 :(得分:2)

看起来像包/ pythonpath问题。系统需要知道模块的位置。您在__init.py__my_app文件夹中有analytic吗? __init__.py文件将磁盘上的目录标记为Python包目录。结构应该是这样的

   |- sentiment/
     |- run.py
     |- my_app/
       |- __init__.py
       |- analytic/
         |- __init__.py
         |- views.py
         |- util. py
         |- vect.pkl

然后在run.py中,尝试使用

导入
import my_app.analytic.utils

from my_app.analytic.utils import <yourClassName>

有关python包的详细信息,请检查here。 并注意名称空间问题。