You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook内核连接失败:模块名称冲突问题求助

解决Python项目中code文件夹与标准库模块冲突的问题

问题根源

你的项目文件夹code和Python标准库中的code模块重名了——当你给code文件夹添加__init__.py后,Python会将其识别为一个包,优先加载它而非标准库的code模块,导致Jupyter内核依赖的标准库code无法正常导入,进而连接失败。

高效解决方案

方案1:重命名code文件夹(最彻底)

直接把code文件夹改成不会和标准库重名的名字,比如src、project_code或者ml_code:

  1. 修改文件夹名称后,同步更新所有导入语句:把from code.foo import x改成from src.foo import x(假设改成了src)
  2. 删除code文件夹下的__init__.py
    这个方案一劳永逸,完全避免了命名冲突,是最优解。

方案2:调整Python路径,使用直接导入

如果不想改文件夹名,可以通过把项目根目录加入Python路径,直接导入模块,无需将code作为包:

  • 在Python脚本(foo.py/bar.py)开头添加:
    import sys
    from pathlib import Path
    # 将项目根目录(root)加入路径
    sys.path.append(str(Path(__file__).parent.parent))
    
  • 在Jupyter Notebook开头添加:
    import sys
    from pathlib import Path
    sys.path.append(str(Path.cwd()))
    

之后导入语句改成from foo import x(注意这里的foo是code文件夹下的foo.py,因为根目录加入路径后,Python能直接找到code里的模块),同时删除code下的__init__.py。

方案3:使用相对导入(仅适用于模块内部调用)

如果只是在code文件夹内的脚本互相导入,比如bar.py导入foo.py的内容,可以用相对导入,不需要__init__.py:
在bar.py里写:

from .foo import x

注意:相对导入不能直接运行脚本(比如python bar.py会报错),适合脚本作为模块被其他代码导入的场景。

内容的提问来源于stack exchange,提问作者Alessio D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:25:35