首页 > 解决方案 > 为什么我不能引用顶级 Python 模块中的子模块?

问题描述

我对 Python 如何导入和处理子模块感到困惑。为什么我不能执行以下操作?

import concurrent
ex = concurrent.futures.ThreadPoolExecutor()

结果是

AttributeError:模块“并发”没有属性“期货”

查看源代码我看到并发库文件夹有一个空__init__.py文件。Python 不应该将文件夹视为一个模块并因此搜索 futures 子模块(存在)吗?

我知道我可以导入 as import concurrent.futures,但是我不清楚为什么我不能只导入顶级模块并引用子模块,因为它符合 Python__init__.py结构。

标签: pythonmodulepython-import

解决方案


对于 Python 模块,有时它们是分开的,以强制用户显式导入子模块,以免在加载具有许多子模块的模块时使命名空间混乱并减少内存使用。


推荐阅读