gpt4 book ai didi

python - 使用导入的模块来引用嵌套模块

转载 作者:行者123 更新时间:2023-11-30 22:35:13 24 4
gpt4 key购买 nike

我是 Python 新手,但我认为我了解 import 语句的工作原理;下面的例子证明我不这样做。

# Works
from sklearn import tree
classifier = tree.DecisionTreeClassifier()

# Doesn't work
import sklearn
classifier = sklearn.tree.DecisionTreeClassifier()
# Error: AttributeError: module 'sklearn' has no attribute 'tree'

由于 tree 本身是另一个模块,我无法使用点语法访问它?即使“from x import y”是规范方法,它是唯一选项吗?

最佳答案

当您导入模块时,Python 会查找该模块。它可以是一个“包”,它是任何带有 __init__.py 的目录。文件。该文件作为目录名称导入。

在您的 __init__.py 中文件,您通常会有:

import name.sub_package.module_a
import name.sub_package.module_b
import name.module_c

导入包中的其余模块,以便可以直接使用它们。有时,特别是对于较大的模块,包作者可能决定不这样做,这会缩短加载时间,因为 Python 必须加载更少的模块。这意味着当您这样做时:

from sklearn import tree

我假设这个包看起来有点像这样:

sklearn/
__init__.py
tree/
__init__.py

它导入sklearn/__init__.py ,看到没有tree ,然后导入 sklearn/tree/__init__.pytree .

但是,显然__init__.py没有import sklearn.tree ,因为导入时找不到它。

要解决此问题,请手动导入:

import sklearn.tree
classifier = sklearn.tree.DecisionTreeClassifier()

关于python - 使用导入的模块来引用嵌套模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44631042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com