Python 从不同模块继承的方法使用导入失败

Python 从不同模块继承的方法使用导入失败,python,python-2.7,inheritance,scikit-learn,Python,Python 2.7,Inheritance,Scikit Learn,我试图在模块myu分类器中创建一个类似scikit的分类器。因此,我让分类器类从scikit.base继承以下类: class ClassifierMixin(object): def score(self, X, y, sample_weight=None): from .metrics import accuracy_score return accuracy_score(y, self.predict(X), sample_weight=sample

我试图在模块
myu分类器
中创建一个类似scikit的分类器。因此,我让分类器类从scikit.base继承以下类:

class ClassifierMixin(object):
    def score(self, X, y, sample_weight=None):
        from .metrics import accuracy_score
        return accuracy_score(y, self.predict(X), sample_weight=sample_weight)
但是,当我调用
MyClassifier.score(X,y)
时,我得到以下错误

--> 290         from .metrics import accuracy_score
ImportError: No module named metrics
我认为正在发生的是,“.”in
.metrics
导致Python在
my_分类器
中搜索
metrics
,而不是
sklearn
。我说得对吗


有没有办法从外部解决这个问题?我知道我可以很容易地在类中定义方法,但使用继承似乎“更好”TM。

为什么要在方法内部进行导入?它应该与所有其他导入一起位于脚本的顶部,这样您就不会有这个问题了。哦!有趣的是,我不知道他们为什么会这样做。有时候,你不想在使用模块之前导入它,以防该方法永远不会被调用。如果调用它,它可以访问方法中的名称。
.metrics
导入是相对导入,这意味着它将在调用它的包中导入一个文件。我怀疑您在自己的模块中使用了.metrics import accurity\u score中的
,并且应该使用sklearn.metrics import accurity\u score
中的
。您是否可以添加一个复制错误并包含完整回溯的文件?注意:OP打开了一个github问题。