Windows下Python项目中Jupyter Notebook的模块导入问题
解决Jupyter Notebook导入上级目录Python模块的问题
针对你在Windows下的项目结构:
\src\tracker\timer.py \notebooks\notebook_files.ipynb
以下是几种可行的解决方法:
方法1:在Notebook中临时添加项目路径到Python搜索路径
这是最直接且无需修改系统设置的方法,在Notebook的开头执行以下代码:
import sys from pathlib import Path # 获取当前Notebook所在的文件夹路径 notebook_folder = Path.cwd() # 定位到项目根目录(即src和notebooks的共同上级目录) project_root = notebook_folder.parent # 将src目录添加到Python的模块搜索路径中 sys.path.append(str(project_root / "src")) # 现在可以正常导入模块 from tracker.timer import Timer
方法2:设置系统环境变量PYTHONPATH
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」区域点击「新建」,变量名填
PYTHONPATH,变量值填src目录的绝对路径(比如D:\your_project\src) - 重启Jupyter Notebook,之后直接用
from tracker.timer import Timer即可导入
方法3:使用Python相对导入(需将目录转为包)
- 在
src目录和tracker目录下各创建一个空的__init__.py文件,让Python将这些目录识别为包 - 在Notebook中使用正确的相对导入语法:
from ..src.tracker.timer import Timer
注意:Jupyter Notebook对相对导入的支持有时会受工作目录影响,若此方法无效,优先用前两种方法
你之前尝试的写法错误原因
- 导入语句中混淆了文件路径分隔符(
/)和Python包层级分隔符(.),正确的包层级应该用点连接 - 相对导入需要目标目录是Python包(即包含
__init__.py),否则无法被识别
内容的提问来源于stack exchange,提问作者Ray Bond
相关产品推荐
相关产品推荐

