繁体   English   中英

Python `import AB` 不起作用,但 `from A import B` 起作用

[英]Python `import A.B` does not work but `from A import B` works

这发生在我使用sklearn时 -

>>> import sklearn
>>> sklearn.preprocessing.normalize # <-- would throw error
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'sklearn' has no attribute 'preprocessing'

>>> from sklearn.preprocessing import normalize # <-- works totally fine

我想知道这两种import方式有何不同? 提前致谢!

我想你可能已经尝试过

>>> import sklearn
>>> sklearn.preprocessing.normalize

这会导致您显示的错误。

问题是您不能以这种方式访问子模块。 你必须这样做:

>>> import sklearn.preprocessing
>>> sklearn.preprocessing.normalize()

这将导入包含normalize() function 的模块。

或者,您可以只导入normalize() function:

from sklearn.preprocessing import normalize

normalize()

在 Python 中,您正在导入库,包括类、方法和属性。 您没有导入方法。 您必须使用from语法从特定库中导入任何属性或方法。 因此, from sklearn.preprocessing import normalize之所以有效,是因为您正试图从库sklearn.preprocessing中导入一个名称为normalize方法 但是在import sklearn.preprocessing.normalize中(你忘记在你的语法中写import了)。 Python 假设您正在尝试导入属于另一个库的子类,因此,Python 将搜索名称为normalize的子类,但找不到任何子类。 如您所见,它会引发错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM