找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 5323|回复: 4

[已解决] 关于导入模块时的奇怪现象

1

主题

3

帖子

3

积分

贫民

积分
3
南风薰兮 发表于 2016-8-2 12:35:42 | 显示全部楼层 |阅读模式
只是举个例子,因为之前在导入其他模块包的时候偶尔也会遇到这样的问题,所以想请大家指点一下该如何避免

我要导入sklearn模块包里的datasets,用的spyder:
import sklearn
sklearn.datasets
然后会报错:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-325a2bfc35d0> in <module>()
----> 1 sklearn.datasets
AttributeError: 'module' object has no attribute 'datasets'

但是我换种方式就可以了
from sklearn import datasets
skleran.datasets

<module 'sklearn.datasets' from 'D:\anaconda\lib\site-packages\sklearn\datasets\__init__.pyc'>

这是为什么?这两种导入方法有区别吗?
回复

使用道具 举报

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo 发表于 2016-8-2 13:41:40 | 显示全部楼层
你的第一种导入方法:
import sklearn
sklearn.datasets 这首使用方式是正确的

第二种:
fromsklearn import datasets

如果使用datasets  就应该直接  datasets 而不需要在其前面加模块名
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-8-2 15:41:05 | 显示全部楼层
mongo 发表于 2016-8-2 13:41
你的第一种导入方法:
import sklearn
sklearn.datasets 这首使用方式是正确的

完美回答,哈哈{:8_217:}
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
南风薰兮  楼主| 发表于 2016-8-2 17:13:58 | 显示全部楼层
mongo 发表于 2016-8-2 13:41
你的第一种导入方法:
import sklearn
sklearn.datasets 这首使用方式是正确的

可是方法一为什么会报错啊,模块包里明明有datasets啊
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
南风薰兮  楼主| 发表于 2016-8-2 18:06:54 | 显示全部楼层
mongo 发表于 2016-8-2 13:41
你的第一种导入方法:
import sklearn
sklearn.datasets 这首使用方式是正确的

我知道了,问题应该出在我身上,我一直误以为只要导入sklearn之后,这个模块包下包含的所有pyc和文件夹都会自动加载到内存,但是实际上只是加载了一部分,比如说打开ipython直接输入import sklearn之后,输入sklearn. <tab>会这样:
In [1]: import sklearn

In [2]: sklearn.
sklearn.base         sklearn.externals    sklearn.setup_module sklearn.utils
sklearn.clone        sklearn.re           sklearn.sys          sklearn.warnings

但是sklearn安装之后里面包含的很多文件夹并没有完全显示出来,比如我要用的是datasets,在D:\anaconda\Lib\site-packages\sklearn下面是有这个文件夹的,我需要from sklearn import datasets来加载它,这个时候再输入sklearn. <tab>,就会这样
In [7]: from sklearn import datasets

In [8]: sklearn.
sklearn.base               sklearn.feature_extraction sklearn.multiclass         sklearn.sys
sklearn.clone              sklearn.feature_selection  sklearn.preprocessing      sklearn.utils
sklearn.cross_validation   sklearn.grid_search        sklearn.re                 sklearn.warnings
sklearn.datasets           sklearn.linear_model       sklearn.setup_module
sklearn.externals          sklearn.metrics            sklearn.svm

以前我一直觉得可以用dir来查看一个模块包里包含的东西来进行学习,看来不能这样,还是要以参考文档为准才行{:8_214:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表