繁体   English   中英

为什么在没有 init 的情况下使用顶级目录的导入在 Python 中工作?

[英]Why does an import with the top level directory work in Python without init?

在此处输入图像描述

我在这里克隆了项目: https://github.com/open-switch/opx-tools并将其加载到 PyCharm 中进行一些调试。 我不明白的是原行所说from opx_tools.opx_config_utils import * 我使用此导入在实际交换机上运行 OpenSwitch,它工作得很好,但我不明白为什么。

opx_tools 是顶级目录的名称,其中没有__init__文件,顶级目录中也没有名为 opx_config_utils 的文件。 opx_config_utils 存在,但它在 lib 目录中。 在我的 PyCharm 实例中,在导入中将 opx_tools 更改为 lib 修复了导入并允许我搜索声明等。

我的 PyCharm 环境和“生产”环境有什么区别? 为什么 opx_tools 有效?

从 3.3 版开始,Python 让您隐式定义命名空间包。 与常规包相反,这些包不需要包含在单个文件夹和子文件夹中,也不需要__init__.py文件。

有关详细信息,请参阅PEP 420

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM