python 中的导入逻辑 - 对于某些模块,我们遵循从 A.B.C import D 的结构,但对于某些模块,我们可以绕过它并从 A import E

问题描述 投票:0回答:1

我无法弄清楚 python 中的导入逻辑,我将使用 langchain 库中的现有示例

模块名称 langchain.chains.retrieval_qa.base.VectorDBQA 直接导入有效,即

from langchain import VectorDBQA

但是对于另一个模块名称 langchain.document_loaders.epub.UnstructedEPubLoader 直接导入是行不通的

from langchain import UnstructuredEPubLoader

会给我一个错误

我需要做

from langchain.document_loaders import UnstructuredEPubLoader

我不明白这背后的逻辑?我如何通过阅读文档知道哪些库可以直接导入,哪些需要遵循结构?

python import module logic
1个回答
0
投票

是否可以直接从主包(from package import module)导入某些东西,或者是否需要指定子包(from package.subpackage import module),其逻辑完全取决于库的内部结构如何设置,这在每个目录中的

__init__.py
文件中定义。

如果可以直接从主包导入模块,通常是因为主包中库的

__init__.py
文件具有该模块的特定导入语句,使其在该级别可用。如果未将其导入到
__init__.py
文件中,则您需要指定包中包含该模块的完整路径。

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.