Python `import A.B` 不起作用,但 `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
有什么不同?提前致谢!
在 Python 中,您正在导入库,包括 类、方法和属性。您没有导入方法。您必须使用 from
语法从特定库中导入任何属性或方法。
因此,from sklearn.preprocessing import normalize
有效,因为您正试图从库 sklearn.preprocessing
中导入名称为 normalize
的 方法 。但是在 import sklearn.preprocessing.normalize
中(你忘记在语法中写 import
了!),Python 假定你正在尝试导入属于另一个库的子类。因此,Python 将搜索名称为 normalize
的子类,但找不到任何子类。如您所见,它会引发错误。
我想你可能已经尝试过
>>> import sklearn
>>> sklearn.preprocessing.normalize
这会导致您显示的错误。
问题是您无法通过这种方式访问子模块。你必须这样做:
>>> import sklearn.preprocessing
>>> sklearn.preprocessing.normalize()
这将导入包含 normalize()
函数的模块。
或者您可以只导入 normalize()
函数:
from sklearn.preprocessing import normalize
normalize()
这发生在我使用 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
有什么不同?提前致谢!
在 Python 中,您正在导入库,包括 类、方法和属性。您没有导入方法。您必须使用 from
语法从特定库中导入任何属性或方法。
因此,from sklearn.preprocessing import normalize
有效,因为您正试图从库 sklearn.preprocessing
中导入名称为 normalize
的 方法 。但是在 import sklearn.preprocessing.normalize
中(你忘记在语法中写 import
了!),Python 假定你正在尝试导入属于另一个库的子类。因此,Python 将搜索名称为 normalize
的子类,但找不到任何子类。如您所见,它会引发错误。
我想你可能已经尝试过
>>> import sklearn
>>> sklearn.preprocessing.normalize
这会导致您显示的错误。
问题是您无法通过这种方式访问子模块。你必须这样做:
>>> import sklearn.preprocessing
>>> sklearn.preprocessing.normalize()
这将导入包含 normalize()
函数的模块。
或者您可以只导入 normalize()
函数:
from sklearn.preprocessing import normalize
normalize()