python - __init__.py 文件中包含的模块中的函数的 ModuleNotFoundError

标签 python

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

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

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/

相关文章:

python - MySQL、fetchone 和 LIMIT

python - 当 terraform 应用 aws_spot_fleet_request 时,如何检索私有(private) IP 地址?

python - 如何使用 Python 装饰器检查函数参数?

python - 如何创建可选参数?

python - 在 pyspark 中拆分列

python - 获取每个元素出现的最快方法

python - 绘图 : using percentage on x axis

python - Urllib 算作网页点击吗?

python - discord.py bot 只响应一个命令

python - 这是检查鼠标单击坐标是否在这些范围内的正确方法吗?