![](/img/trans.png)
[英]Why does import work with Python nose when test directory contains __init__.py?
[英]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.