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

Windows10下Jupyter Notebook中Python3无法导入同目录文件

解决Jupyter Notebook中同目录模块导入失败的问题

我之前在Windows 10的Jupyter环境里也碰到过一模一样的坑,给你几个实用的排查和解决方法:

1. 先确认Jupyter的当前工作目录

很多时候问题出在Jupyter启动的工作目录根本不是你文件所在的目录!先在Jupyter单元格里运行这段代码:

import os
print(os.getcwd())

如果输出的路径不是Test1.py和Test2.py所在的文件夹,那你添加的sys.path路径自然没用。解决办法:

  • 要么用代码切换工作目录:
    os.chdir("C:\\你的文件所在绝对路径") # Windows路径要用双反斜杠,或者原始字符串r"C:\xxx"
    
  • 要么关闭当前Jupyter,回到Jupyter的启动页面,先进入目标文件夹再打开Test2.ipynb(或Test2.py)。

2. 检查sys.path添加的路径是否正确

Windows的路径格式很容易踩坑:

  • 不要直接写类Unix的/path/to/xxx,要用Windows兼容的路径:比如C:\\Users\\你的用户名\\桌面\\你的文件夹,或者用原始字符串r"C:\Users\你的用户名\桌面\你的文件夹"。
  • 添加路径后,打印sys.path确认路径是否真的被加入列表:
    import sys
    print(sys.path)
    

如果目标路径不在列表里,说明你写的路径有误,修正后再试。

3. 将目录标记为Python包

在Test1和Test2所在的目录里创建一个空的__init__.py文件(文件内容可以是空的),把这个目录变成Python包。然后在Test2里用相对导入:

from .Test1 import method1

注意:这种方式在Jupyter里直接运行Test2.py文件可能还会有问题,你可以直接把导入代码写在Jupyter单元格里执行,效果会更稳定。

4. 手动加载模块(终极临时方案)

如果上面的方法都不行,可以用Python的importlib模块手动加载Test1,绕开默认的模块查找机制:

import importlib.util

# 指定Test1.py的路径(如果在当前目录就直接写"Test1.py")
spec = importlib.util.spec_from_file_location("Test1", "Test1.py")
Test1 = importlib.util.module_from_spec(spec)
spec.loader.exec_module(Test1)

# 现在可以调用方法了
Test1.method1()

内容的提问来源于stack exchange,提问作者Miguel GC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:26