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

Python模块结构与import机制疑问:sklearn导入报错求助

Python模块结构与import语句工作原理解析

模块层级结构

Python的代码组织遵循包-子包-模块的层级:

  • 一个「包」是包含__init__.py文件的文件夹(Python 3.3+支持无该文件的命名空间包,但sklearn属于传统包)。
  • 包内的子包、模块不会自动加载到父包的命名空间中,除非父包的__init__.py里显式声明导入这些子模块。

两种import方式的区别

1. import 包名 as 别名

这种方式仅将包本身导入当前命名空间,包内的子模块不会自动加载。如果要访问子模块,必须额外显式导入,否则直接访问会触发属性不存在的错误。

2. from 包名 import 子模块

直接将指定的子模块导入当前命名空间,子模块的内容可以直接使用,无需额外操作。

你的代码问题分析

  • 执行import sklearn as sk时,sklearn包被导入,但它的__init__.py并未将linear_model子模块导入到sklearn的命名空间中,因此sk.linear_model会报错AttributeError: module 'sklearn' has no attribute 'linear_model'。
  • from sklearn import linear_model则是直接加载linear_model子模块到当前命名空间,所以能正常运行。

补充:如何通过import sklearn as sk使用linear_model

如果偏好这种导入方式,可以补充导入子模块:

import sklearn as sk
import sklearn.linear_model  # 显式导入子模块
# 之后即可正常使用
model = sk.linear_model.LinearRegression()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:36:32