You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入报错:如何跳过中间目录直接导入深层子模块?

问题描述

项目结构如下:

folderA
├── __init__.py
└── folderB
    ├── __init__.py
    └── folderC
        ├── __init__.py
        └── module.py

希望无需提及folderB,直接使用如下导入语句:

from folderA.folderC.module import *

当前各文件内容:

  • folderA/__init__.py:
    from .folderB import *
    
  • folderA/folderB/__init__.py:
    # empty
    
  • folderA/folderB/folderC/__init__.py:
    from .module import hello
    
  • folderA/folderB/folderC/module.py:
    def hello():
      print("hello world")
    

执行导入时收到错误:

ModuleNotFoundError: No module named 'folderA.folderC'

解决方案

要跳过folderB直接从folderA导入folderC,核心是把folderC的模块引用“提升”到folderA的命名空间里,具体修改两个__init__.py文件即可:

  • 修改folderA/folderB/__init__.py:
    导入folderC模块,让folderB能向外暴露它:

    from . import folderC
    
  • 修改folderA/__init__.py:
    从folderB中把folderC导入,绑定到folderA的命名空间下:

    from .folderB import folderC
    

完成这两步后,folderA.folderC就会被Python识别为合法的模块路径,此时执行from folderA.folderC.module import *就能正常导入模块,调用hello()也能正确输出"hello world"。

如果还想进一步简化调用,比如直接从folderA导入hello函数,可以在folderA/__init__.py里添加:

from .folderB.folderC.module import hello

之后就能直接用from folderA import hello来调用该函数。

内容的提问来源于stack exchange,提问作者Oscar Llorente Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:42:16