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

Sphinx autodoc导入问题:Python项目模块无法识别

解决Sphinx生成文档时的模块导入错误

问题背景

项目目录结构:

b_tool
 |
 |--b.py
 |
 |--sub
 |   |
 |   |--sub.py
 |
 |--Doc
     |
     |--Sphinx

主文件b.py位于C:\b_tool\b.py,通过from b_tool.sub.sub import Subclass的绝对路径方式导入子模块,在C:目录执行python -m b_tool.b可正常运行。但在C:\b_tool\Docs\Sphinx目录执行make html时,出现如下错误:

WARNING: autodoc: failed to import module 'b'; the following exception was raised:
No module named 'b_tool'

当前conf.py已添加路径配置,但问题未解决。

解决方案

修改conf.py中的路径配置,将Python的模块搜索路径指向b_tool所在的父目录(即C:\),具体修改如下:

project = 'B'
copyright = '2023, John Doe'
author = 'John Doe'
    
import os
import sys
# 替换原路径配置,指向b_tool的父目录
sys.path.insert(0, os.path.abspath('../../..'))

extensions = ['sphinx.ext.autodoc']

templates_path = ['_templates']
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']

原因说明

当前conf.py位于C:\b_tool\Docs\Sphinx,原配置中的os.path.abspath('../..')会解析为C:\b_tool,但Python需要找到b_tool这个包的父目录,才能正确识别b_tool.sub.sub这种绝对导入语法。调整路径为../../..后,解析结果为C:\,和你运行python -m b_tool.b时的工作目录一致,Sphinx就能正确找到b_tool模块。

如果担心层级计数出错,也可以用更直观的写法:

# 明确定位到b_tool的父目录
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))

内容的提问来源于stack exchange,提问作者zeus300

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:06:12