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

Jupyter Notebook跨目录脚本文件导入失败问题咨询

解决Notebook导入settings时的路径问题

这个问题的核心在于Python中相对路径是基于当前进程的工作目录(CWD),而不是模块所在的目录。你运行main.py时应该是在python/目录下启动的,所以CWD是python/,settings.py里的open("data/file.p","rb")能正确找到python/data/file.p;但Notebook运行时默认CWD是nb/,它会去nb/data/file.p找文件,自然就失败了。

在不修改settings.py的前提下,有两种简单可靠的解决方法:

方法1:在Notebook中切换工作目录到python/

在Notebook的第一个单元格里执行以下代码,先把当前工作目录切换到python/,再导入settings:

import os
# 获取nb目录的父目录(project),再进入python子目录
target_dir = os.path.join(os.path.dirname(os.getcwd()), "python")
os.chdir(target_dir)

# 现在可以正常导入了
from settings import *

这样切换后,Notebook的CWD就和你运行main.py时完全一致,settings.py里的相对路径就能正确定位到文件。

方法2:从project/目录启动Jupyter Notebook

如果你每次启动Notebook时都从project/目录下执行jupyter notebook,那么可以在Notebook中先调整sys.path并切换CWD:

import os
import sys

# 把python目录加入Python的模块搜索路径
sys.path.append(os.path.join(os.getcwd(), "python"))
# 切换工作目录到python/
os.chdir(os.path.join(os.getcwd(), "python"))

from settings import *

这种方法的好处是不用每次在Notebook里写路径拼接代码,但需要你固定启动Notebook的目录。

另外提醒一下:如果之后你在Notebook里有其他相对路径的操作,也要注意当前CWD已经是python/了,避免出现新的路径问题。

内容的提问来源于stack exchange,提问作者Siddhant Tandon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:15:26