Python"import A.B"不起作用,但"from A import B"



这发生在我使用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()函数的模块。

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

from sklearn.preprocessing import normalize
normalize()

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

相关内容

  • 没有找到相关文章

最新更新