1

这个问题今天更难了,因为我今天没有使用 Sphinx 主页上的搜索功能。

我有一组模块,我想从文档字符串中记录下来。但是,这些不是纯 Python 脚本。它们不会按原样编译,因为它们是从在执行范围内创建新变量的 C# 应用程序运行的。

对于 Python 编译器,看起来我有一个未定义的方法(从技术上讲,我会这样做,直到 C# 创建 IronPython 脚本引擎并创建该方法)。

当我运行时:

sphinx-build -b html output/html

我得到:

NameError: name 'injected_method' is not defined

如何让 Sphinx 忽略编译错误并只生成我的文档?

编辑:

如果有人知道 Sphinx 的替代品(如 Epydoc)是否不必编译 Python 脚本来获取函数签名和文档字符串,那也会很有帮助。Sphinx 是最好看的文档生成器,但如果必须,我会放弃它。

4

3 回答 3

3

好吧,你可以试试:

  • 在 try/except 中包装注入方法的使用。
  • 编写一个脚本,过滤掉在导入时运行的所有 python 代码,并将结果输入 Sphinx。
  • 你可以....好吧,我没有更多的想法。:)
于 2009-10-01T22:47:24.217 回答
0

也许您可以将 injection_method 定义为一个空函数,以便文档能够正常工作。您需要确保您要注入的 injection_method 的定义发生在新的 injection_method 存根之后。

#By empty function I mean a function that looks like this
def injected_method():
  pass
于 2009-10-01T22:20:24.650 回答
0

好的,我找到了解决错误的方法。

设置嵌入式脚本环境时,不要使用:

ScriptScope.SetVariable("injected_method", myMethod);

我现在正在使用:

ScriptRuntime.Globals.SetVariable("injected_method", myMethod);

然后,在脚本中:

import injected_method

然后我在搜索路径中创建了一个虚拟的 injection_method.py 文件,该文件是空白的。我在构建 C# 项目期间删除了虚拟文件以避免任何冲突。

于 2009-10-02T16:10:21.307 回答