无法从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 模块吗? [复制]