无法从python中的另一个目录导入python类[重复]

Posted

技术标签:

【中文标题】无法从python中的另一个目录导入python类[重复]【英文标题】:Not able to import a python class from another directory in python [duplicate] 【发布时间】:2021-10-06 17:52:38 【问题描述】:

我正在尝试从另一个目录导入一个 python 类,但它一直显示“找不到模块”

MLJAR-SUPERVISED
├── examples
│   │── notebooks
│   └── scripts
│          └── target.py
└── supervised
    └── source.py

我正在尝试将 evaluation 的类从 source.py 导入到 target.py 与此:

from supervised.source import evaluation

但它显示 `ModuleNotFoundError: No module named 'supervised' 在 python 3.9 中执行此操作的最佳方法是什么?

【问题讨论】:

【参考方案1】:

有多种方法可以解决此问题。第一种方法是将包含 source.py 的受监督文件夹移动到脚本文件夹中。所以文件结构看起来像这样:-

MLJAR-SUPERVISED
├── examples
   │── notebooks
   |── scripts
           |── target.py
           └── supervised
                  └── source.py

第二种方式在这里得到了广泛的回答...link

【讨论】:

这确实有效,但我真的很想知道为什么我的方法不对? 当你 import abc 时,Python 会检查 sys.modules 中的模块 abc。这是之前导入的所有模块的缓存。如果在其中找不到名称,Python 将继续搜索内置模块列表。这些是 Python 预装的模块。如果在内置模块中仍未找到该名称,Python 然后在sys.path 定义的目录列表中搜索它。该列表通常包括首先搜索的当前目录。由于您的包存在于不同的目录中,因此会发生错误。【参考方案2】:

您应该在名为__init__.py(完全正确)的受监管文件夹中创建一个新文件 然后你就可以使用from supervised.source import evaluation 导入类了。

【讨论】:

我试过了,对我没用。

以上是关于无法从python中的另一个目录导入python类[重复]的主要内容,如果未能解决你的问题,请参考以下文章

您可以从 github 存储库中的另一个目录导入 python 模块吗? [复制]

Python:从项目层次结构中同一级别的另一个目录导入模块

如何从 Python 中的另一个文件调用类方法?

Jupyter Notebook从同一目录中的python文件导入类

Python之路-包

从eclipse中的另一个java项目导入