Python跨目录导入模块失败:ModuleNotFoundError问题求助
解决Python跨目录模块导入失败问题
问题场景
项目目录结构如下:
Algorithms/ Unsupervised/ examples/ BSAS.ipynb BSAS.py
在examples/BSAS.ipynb中执行导入语句:
from Unsupervised import BSAS
PyCharm语法校验显示合法,但运行时抛出错误:
ModuleNotFoundError: No module named 'Unsupervised'
可行解决方案
1. 临时添加根目录到Python搜索路径
在Notebook开头插入以下代码,将项目根目录(Algorithms/)加入Python的模块搜索路径:
import sys import os # 向上回溯两级目录,定位到Algorithms文件夹 sys.path.append(os.path.abspath(os.path.join(os.getcwd(), '../..'))) from Unsupervised import BSAS
2. 使用相对导入
修改导入语句为相对导入格式,适用于同包内的模块引用:
from .. import BSAS
注意:部分Notebook环境对相对导入支持有限,若仍报错,可结合方法1使用。
3. 配置永久路径
在Algorithms目录下创建algorithms.pth文件,写入该目录的绝对路径(例如/home/user/Projects/Algorithms),然后将这个.pth文件复制到Python环境的site-packages目录中。Python启动时会自动加载该路径下的模块。
4. 确认PyCharm的源码根目录配置
右键点击Algorithms目录,选择Mark Directory as -> Sources Root,之后重启Notebook运行内核,再尝试导入操作。
内容的提问来源于stack exchange,提问作者Mikey Joyce
相关产品推荐
相关产品推荐

