Python3.9跨目录导入类提示ModuleNotFoundError如何解决
问题原因
Python执行脚本时默认只会把脚本所在目录(也就是examples/scripts)、环境已安装包目录、当前工作目录加入模块搜索路径,你的项目根目录MLJAR-SUPERVISED不在搜索路径范围内,因此无法定位到supervised包。
最优解决方案(开发场景推荐)
采用可编辑模式安装当前项目,一次配置永久生效,修改包代码无需重复安装:
- 在项目根目录
MLJAR-SUPERVISED下新建pyproject.toml配置文件,写入以下内容:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "mljar-supervised" version = "0.1.0" packages = ["supervised"]
- 激活你当前使用的Python虚拟环境,切换到项目根目录,执行命令:
pip install -e .
配置完成后,不管在任何路径下执行target.py都可以正常使用from supervised.source import evaluation语句导入。
临时调试方案(无需修改项目配置)
如果仅需要临时运行调试,可以在target.py文件最开头添加以下代码,手动把项目根目录加入模块搜索路径:
import sys from pathlib import Path # 往上跳转3层路径:target.py → scripts → examples → 项目根目录 sys.path.append(str(Path(__file__).parent.parent.parent.resolve()))
该方案仅适用于本地临时调试,不推荐在生产或正式项目中使用。
内容的提问来源于stack exchange,提问作者aakarsh
相关产品推荐
相关产品推荐

