Python import 模块导入问题
最近在用Python做决策树(Decision tree)时, 遇见了一个以前没有遇到的问题,就是用'import sklearn.tree'时一切正常,但是'import sklearn..... sklearn.tree'时却报错说: AttributeError: 'module' object has no attribute 'tree'.
python的导入机制是这样的,在用 'import sklearn' 时,它只会导入 \${sklearn_dir}/__init__.py 里定义好的对象(objectives), 然后保存在自己的命名空间(namespace)里并可以后来直接使用; 在用' import sklearn.tree' 时,python实际上导入了两个文件,\${sklearn_dir}/__init__.py 和 \${sklearn_dir}/tree/__init__.py, 注意tree在这儿是以一个子文件夹的形式存在的。
这样回归到一开始的问题,就会发现是因为 sklearn.tree是一个单独存在的子文件夹/模块,并且在__init__.py里没有被定义,这样当然就不能用第一种办法来引用啦~