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

Jupyter Notebook调用自定义Python包报错:train_test_split未定义

解决Jupyter中自定义Python包调用sklearn函数报错的问题

嘿,这个问题我之前也踩过坑!咱们一步步来排查解决:

首先,检查包内的导入语句是否正确

你提到在命令行正常的包中曾通过... from sklearn.model_导入train_test_split(),这里大概率是拼写错误啦!正确的导入路径应该是sklearn.model_selection,所以你包内的导入语句应该写成:

# 在你的包的模块文件(比如my_package/functions.py)里
from sklearn.model_selection import train_test_split

def your_custom_function(data):
    # 在这里正常调用函数
    X_train, X_test, y_train, y_test = train_test_split(data, test_size=0.2)
    # 后续逻辑...

如果导入路径写错,即使命令行因缓存侥幸运行,Jupyter里重新加载就会暴露这个问题。

其次,重启Jupyter内核清除模块缓存

Jupyter有个常见的“坑”:它会缓存已经导入过的模块,哪怕你修改了包的代码,不重启内核的话,它还是会使用旧版本的模块。这时候你需要:

  • 点击Jupyter界面顶部的「Kernel」菜单
  • 选择「Restart」,然后重新运行你的导入和调用代码

确认Jupyter使用的环境和包安装环境一致

有时候命令行的Python环境和Jupyter的内核环境不是同一个!你可以分别在命令行和Jupyter里运行以下代码,检查路径是否一致:

import sys
print(sys.executable)

如果路径不同,说明Jupyter用的不是你安装包的Anaconda环境,这时候需要切换Jupyter的内核到Anaconda环境,或者把包安装到Jupyter使用的环境里。

检查包的结构是否正确

确保你的包目录里有__init__.py文件(哪怕是空的),这样Python才会把它识别为一个可导入的包。另外,如果你的自定义函数在子模块里,要确保导入路径是对的,比如:

# 如果你包的结构是:
my_package/
    __init__.py
    functions.py

那在Jupyter里应该这样导入:

from my_package.functions import your_custom_function

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:21:09