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

Mkdocs无法找到modelling.constraints模块问题求助

问题:mkdocstrings无法识别Python模块,生成文档失败

使用的依赖

mkdocs = "^1.4.2"
mkdocstrings = "0.19.0"
mkdocs-material = "8.5.8"
mkdocstrings-python = "0.7.1"

mkdocs.yml配置

site_name: Optimization Services Documentation
site_url: "https://example.com"

theme:
  name: "material"
nav:
  - 'index.md'
  - 'reference.md'
plugins:
  - search
  - mkdocstrings:
      handlers:
        python:
          setup_commands:
            - import sys
            - sys.path.append('../')
          selection:
            new_path_syntax: true

reference.md内容

# Reference
::: modelling.constraints

目标模块代码(modelling/constraints.py)

def init_constraints(groupes_chantiers: list[GroupeChantiers],
                     digraph_precedence: nx.DiGraph,
                     graph_coactivite: nx.Graph,
                     model: cp_model.CpModel,
                     **kwargs) -> None:
    """
    Adds constraints to cp_model
    Args:
        groupes_chantiers: 
        digraph_precedence: 
        graph_coactivite: 
        model: 

    Returns: None

    """
    pass

执行mkdocs serve时的错误

INFO     -  Building documentation...
INFO     -  Cleaning site directory
INFO     -  DeprecationWarning: 'selection' and 'rendering' are deprecated and merged into a single 'options' YAML key
              File "C:\Users\9821390Z.COMMUN\AppData\Local\pypoetry\Cache\virtualenvs\optimisation-KWHapjG2-py3.9\lib\site-packages\mkdocstrings\extension.py", line 121, in run
                html, handler, data = self._process_block(identifier, block, heading_level)
              File "C:\Users\9821390Z.COMMUN\AppData\Local\pypoetry\Cache\virtualenvs\optimisation-KWHapjG2-py3.9\lib\site-packages\mkdocstrings\extension.py", line 185, in _process_block
                warn(
INFO     -  DeprecationWarning: Parameter `only_exported` is deprecated, use `implicit` instead.
              File "C:\Users\9821390Z.COMMUN\AppData\Local\pypoetry\Cache\virtualenvs\optimisation-KWHapjG2-py3.9\lib\site-packages\mkdocstrings_handlers\python\handler.py", line 195, in collect
                unresolved, iterations = loader.resolve_aliases(only_exported=True, only_known_modules=True)
              File "C:\Users\9821390Z.COMMUN\AppData\Local\pypoetry\Cache\virtualenvs\optimisation-KWHapjG2-py3.9\lib\site-packages\griffe\loader.py", line 181, in resolve_aliases
                warn(
INFO     -  DeprecationWarning: Parameter `only_known_modules` is deprecated, use `external` instead.
              File "C:\Users\9821390Z.COMMUN\AppData\Local\pypoetry\Cache\virtualenvs\optimisation-KWHapjG2-py3.9\lib\site-packages\mkdocstrings_handlers\python\handler.py", line 195, in collect
                unresolved, iterations = loader.resolve_aliases(only_exported=True, only_known_modules=True)
              File "C:\Users\9821390Z.COMMUN\AppData\Local\pypoetry\Cache\virtualenvs\optimisation-KWHapjG2-py3.9\lib\site-packages\griffe\loader.py", line 189, in resolve_aliases
                warn(
ERROR    -  mkdocstrings: modelling.constraints could not be found
ERROR    -  Error reading page 'reference.md':
ERROR    -  Could not collect 'modelling.constraints'

注意:将reference.md改为::: modelling可正常运行,但仅返回__cached__, __file__, __package__等私有属性,确认modelling是Python包,但无法获取其内部内容。


解决方案

1. 修正模块路径配置

sys.path.append('../')的路径可能不符合你的项目结构。假设你的项目结构是:

project-root/
├── modelling/
│   ├── __init__.py
│   └── constraints.py
└── docs/
    ├── mkdocs.yml
    ├── index.md
    └── reference.md

那么在docs目录下执行mkdocs serve时,../会指向project-root,这部分是对的,但建议改用绝对路径避免歧义,或者直接将包安装到虚拟环境(执行poetry install),无需手动添加sys.path:

setup_commands:
  - import sys, os
  - sys.path.append(os.path.abspath('../'))

2. 更新mkdocstrings配置消除废弃警告

原配置中的selection已被废弃,需要合并到options中,同时替换废弃参数:

plugins:
  - search
  - mkdocstrings:
      handlers:
        python:
          setup_commands:
            - import sys, os
            - sys.path.append(os.path.abspath('../'))
          options:
            new_path_syntax: true
            implicit: true  # 替代原only_exported参数
            external: false  # 替代原only_known_modules参数

3. 确保modelling包正确导出内部模块

在modelling/__init__.py中添加导出声明,让mkdocstrings能识别内部模块:

# modelling/__init__.py
from . import constraints

__all__ = ["constraints"]

或者直接导出需要的函数:

from .constraints import init_constraints

__all__ = ["init_constraints"]

4. 调整reference.md的引用方式

如果已经在__init__.py中导出了模块,原引用::: modelling.constraints即可生效;如果需要直接引用函数,可改为:

# Reference
::: modelling.constraints.init_constraints

内容的提问来源于stack exchange,提问作者Grégory Archambeaud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:50:16