发生异常:Python中的ModuleNotFoundError

2024-10-04 11:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我从一个程序开始。我编写了几个捆绑在三个包中的函数。所有包都有一个BaseFunction,它扩展了三个包之外的另一个BaseFunction。在

例如,这个函数扩展了BaseScalingFunctionClass,而这个类扩展了BaseFunctionClass

排除包装:

from abc import ABCMeta, abstractmethod
import matplotlib.pyplot as plt


class BaseFunctionClass():

    def __init__(self):
        pass

    @abstractmethod
    def getValue(self, x: float) -> float:
        pass

    def plot(self, x):
        y = []
        for val in x:
            y.append(self.getValue(val))

        plt.plot(x, y)
        plt.show()

包装内:

^{pr2}$

以及

from BaseScalingFunction import BaseScalingFunctionClass 
import numpy as np
class HaarScalingFunction(BaseScalingFunctionClass):

    def __init__(self):
        pass

    def getValue(self, x: float) -> float:
        if(-1/2 < x and x <= 1/2): 
            return 1.0
        return 0.0

    def plot(self):
        x = np.arange(-2, 2, 0.01)
        super().plot(x)

如果我尝试以下命令,一切正常

instance = HaarScalingFunction()
instance.plot()

instance = BaseScalingFunctionClass()
print(instance)

现在,我想写一个方法,它返回两个基函数的标量积。在

from numpy import trapz
from BaseFunction import BaseFunctionClass
from ScalingFunctions.HaarScalingFunction import HaarScalingFunction

class Calculation():

    def __init__(self):
        pass

    def innerProduct(self, function1: BaseFunctionClass, function2: BaseFunctionClass) -> float: 
        return trapz(function1.getValue * function2.getValue)

HaarScalingFunction1 = HaarScalingFunction()
HaarScalingFunction2 = HaarScalingFunction()
calculation = Calculation()

print(calculation.innerProduct(HaarScalingFunction1, HaarScalingFunction2))

如果我尝试运行此命令,会出现以下异常:

Exception has occurred: ModuleNotFoundError No module named 'BaseScalingFunction'

File "C:\path", line 2, in module from BaseScalingFunction import BaseScalingFunctionClass

File "C:\path", line 3, in module from ScalingFunctions.HaarScalingFunction import HaarScalingFunction

我不明白,为什么在HaarScalingFunction中没有找到基于模块的scalingfunction,因为它以前是在我的测试中发现的?在

我很感激你的帮助

马提亚斯

编辑

我添加了一些插件,发现

from BaseScalingFunction import BaseScalingFunctionClass 

在HaarScalingFunction中是一个未解析的导入。我把线路改成

from ScalingFunctions.BaseScalingFunction import BaseScalingFunctionClass 

现在错误消失了。也就是说,我不太清楚进口商品是如何使用的。如果我在HaarScalingFunction.class当我从另一个班用这个班的时候就不会再这样了?在

我假设如果我启动这个文件,当前的工作目录就被设置为它,因此另一个文件被找到了,因为它在同一个子文件夹中。我在另一个文件中找不到第二个文件。有人能证实这一点吗?在


Tags: 文件instancefromimportselfplotdefpass