Jupyter调用同目录config.py出现Config属性缺失错误求助
AttributeError: module 'config' has no attribute 'Config'的问题 我来帮你一步步排查这个导入异常的问题,这在Jupyter环境里是很常见的坑,下面是最可能的原因和对应的解决方法:
1. 先确认Jupyter的工作目录是否和文件目录一致
这是最容易踩的坑!Jupyter的默认工作路径可能不是你存放config.py和Notebook的目录。你可以先在Notebook里运行这段代码查看当前工作路径:
import os print(os.getcwd())
如果输出的路径和你的文件所在目录不一致,那肯定找不到config.py里的类。解决办法:
- 关闭当前Jupyter会话,打开终端
cd到你的文件所在目录,再运行jupyter notebook启动 - 或者在Notebook里直接切换工作目录(替换成你的文件绝对路径):
import os os.chdir("/Users/xxx/your-folder-path")
2. 排查重名冲突问题
看看你的目录里有没有其他叫config.py的文件?或者有没有名为config的文件夹(里面带__init__.py的那种)?Python会优先导入这些同名的模块/包,导致你自己写的config.py没被加载。
解决办法:
- 临时把你的
config.py改个名字,比如my_config.py,然后在Notebook里改成import my_config as config试试,如果能正常导入,就说明是重名冲突的问题。
3. 清理Python缓存文件
Python会生成.pyc缓存文件和__pycache__目录,有时候旧的缓存会导致导入异常。你可以:
- 删除目录下的
__pycache__文件夹 - 删除
config.cpython-xxx.pyc这类后缀的缓存文件 - 重启Jupyter后再重新运行代码
4. 检查config.py本身是否有加载异常
看你提供的config.py代码,Config类是全局定义的,但要注意它的__init__方法里加载了./release/Base.so动态库。如果这个文件不存在、路径不对,或者加载失败,会导致整个模块导入时出错,Config类也就无法被正常定义。
你可以先在终端里测试导入,排除模块本身的问题:
python -c "import config; print(config.Config)"
如果这里也报错,那你需要先解决动态库加载的问题:
- 确认
Base.so文件存在于./release/路径下(或者改成绝对路径) - 检查动态库是否兼容当前系统和Python版本
5. 确认Jupyter内核和你的Python环境一致
有时候Jupyter用的Python内核和你终端里的Python不是同一个环境,导致模块搜索路径不一样。你可以在Notebook里运行这段代码查看内核的Python路径:
import sys print(sys.executable)
再和终端里which python(Linux/macOS)或where python(Windows)的输出对比,如果不一样,说明环境不匹配。解决办法:
- 切换到正确的Python环境,重新启动Jupyter
- 或者在目标环境里安装Jupyter内核:
ipython kernel install --user --name=你的环境名称,然后在Notebook的内核选项里切换到这个内核
内容的提问来源于stack exchange,提问作者Jeongbin Kim

