阻止Sphinx执行模块

djp*_*djp 3 python python-sphinx

我正在尝试使用Sphinx进行python文档生成.问题是sphinx-build最终会执行模块/评估全局范围内的任何内容.它有这样做的原因吗?有没有人知道可以设置为禁用此标志的标志?

似乎Sphinx试图进行代码覆盖或类似的东西,这绝对不是我想要的.通常这不是问题,但是一组特定的模块非常特定于环境.

Dav*_*ver 7

Sphinx评估全局范围内的所有内容,因为autodoc插件导入模块,导入模块会评估全局范围内的所有内容.

要阻止这种情况,要么:

  • 禁用autodoc插件(autodoc在sphinx配置文件中搜索),或
  • 保护你不希望执行的代码 if __name__ == "__main__": do_stuff()

  • 我认为仅仅为了获取文档字符串而执行代码是一个非常糟糕的设计,它将构建时转换为运行时。他们可以像已知宇宙中的任何其他代码文档生成器一样解析代码并提取文档字符串。 (2认同)