Python 模块中函数的ModuleNotFoundError为';已包含在_uinit__uuu.py文件中

Python 模块中函数的ModuleNotFoundError为';已包含在_uinit__uuu.py文件中,python,Python,我在获取正确导入的函数时遇到问题,我不确定原因 现在我有一个文件结构,如下所示: utils/ - __init__ - metrics - processing __init__ decision_tree 在我的decision_tree.py文件中,我在顶部有以下导入语句: from utils import mse, majority_vote, gini 当我运行decision_tree.py时,我得到以下错误: ModuleNotFoundError: No mod

我在获取正确导入的函数时遇到问题,我不确定原因

现在我有一个文件结构,如下所示:

utils/
  - __init__
  - metrics
  - processing
__init__
decision_tree
在我的
decision_tree.py
文件中,我在顶部有以下导入语句:

from utils import mse, majority_vote, gini
当我运行
decision_tree.py
时,我得到以下错误:

ModuleNotFoundError: No module named 'processing'
在回溯中,它提到了
metrics.py
中的以下行:

File "C:\Users\Jonat\OneDrive\Dokumentumok\Python Scripts\easyml\utils\metrics.py", line 8, in <module>
from processing import get_counts
根目录中的
init.py
文件为空

此外,当我转到
metrics.py
文件并运行它时,我没有得到
ModuleNotFoundError


那么,为什么当我运行
metrics.py
时,import语句工作正常,但当我通过
init.py通过外部文件访问
metrics.py
时,会出现错误,即使我已经为
处理
度量
文件中要包含的所有内容指定了源。processing import*
获取处理模块内部的可导入名称,但不获取名称
处理
本身

这有点像打开一个盒子,发现里面还有五个盒子,把那五个盒子放进口袋,然后把原来的盒子扔掉


当您作为独立模块执行
metrics.py
时,导入工作正常,因为您位于
utils/
目录中,
sys.path
包括当前目录。

当我在
decision_tree.py?
中导入
utils
目录时,我应该做什么更改以允许
metrics.py
中调用
processing.py中的函数工作
PYTHONPATH
@JohnGordon:这是绝对的最后手段。如果使用
python3-m easyml.utils.metrics
运行
metrics.py
中的相对导入,如果
easyml
的根在Python路径中,则应该可以正常工作;您不希望将目录树的所有级别都添加到
PYTHONPATH
PYTHONPATH
是一种当您不了解如何制作和安装软件包时会使用的黑客攻击。
from .processing import *
from .metrics import *