我在正确导入函数时遇到问题,我不确定原因。
现在我有一个如下所示的文件结构:
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
在我的 <strong>init</strong>.py
在 utils 文件中,我有以下内容:
from .processing import *
from .metrics import *
<strong>init</strong>.py
根目录下的文件为空。
此外,当我转到 metrics.py
时文件并运行它,我没有得到 ModuleNotFoundError
.
那么为什么当我运行 metrics.py
导入语句工作正常,但是当我访问 metrics.py
时通过外部文件通过 <strong>init</strong>.py
我得到了错误,即使我已经指定所有内容都包含在 processing
中和 metrics
文件?
最佳答案
from .processing import *
获取可导入的名称在处理模块中,但不是名称 processing
本身。
这有点像打开一个盒子,在里面找到另外五个盒子,把这五个盒子放在口袋里,然后把原来的盒子扔掉。
当您将 metrics.py
作为独立模块执行时,导入工作正常,因为您位于 utils/
目录中,并且 sys.path
包含当前目录。
关于python - __init__.py 文件中包含的模块中的函数的 ModuleNotFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56119242/