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

Jupyter Notebook从父目录导入时提示No module named 'src'的解决方法

解决Jupyter Notebook无法导入src模块的问题

问题根源

你的some_notebook.ipynb放在my_project/notebook目录下,而src模块在项目根目录my_project里。Python默认只会在当前工作目录(也就是notebook)和系统默认路径里找模块,所以找不到src。

正确的sys.path.append路径

你要加的不是../src,而是项目根目录my_project的路径,可以用相对路径../,或者直接写绝对路径。

在Notebook最开头加这段代码:

import sys
sys.path.append('../')
# 也可以写绝对路径,比如 sys.path.append('/Users/xxx/my_project')

之后再执行from src.preprocess import some_processing就没问题了。

为什么../src不行?因为Python要识别src作为一个模块,必须找到包含src的父目录。如果加的是../src,Python会去../src里找名为src的模块,自然找不到。

更稳定的解决方案

临时改sys.path每次开Notebook都要写,推荐两种更省心的方式:

  • 设置PYTHONPATH环境变量:启动Notebook前,在终端里先执行:
    export PYTHONPATH="/你的项目绝对路径/my_project:$PYTHONPATH"
    jupyter notebook
    
    这样启动的Notebook会自动把项目根目录加入模块搜索路径,不用每次改sys.path。
  • 安装为可编辑包:在my_project根目录下创建pyproject.toml(内容可以参考下方示例),然后执行:
    pip install -e .
    
    这会把整个项目安装成可编辑的Python包,不管你在什么位置运行代码,都能直接导入src模块,这也是AlphaFold这类项目常用的规范做法。

示例pyproject.toml内容:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my_project"
version = "0.1.0"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:31:11