【问题标题】:Autodoc works locally, but does not on the ReadTheDocsAutodoc 在本地工作,但不在 ReadTheDocs 上
【发布时间】:2014-07-17 13:54:31
【问题描述】:

我使用 autodoc 记录了一些功能。在本地它运作良好。 当我提交到 GitHub 时,文档是基于 ReadTheDocs 构建的,但没有我用“automodule”记录的函数。

我在我的 conf.py 中添加了:

import mock

MOCK_MODULES = ['numpy', 'scipy']
for mod_name in MOCK_MODULES:
   sys.modules[mod_name] = mock.Mock() 

但这无济于事。

这可能与我使用自己的 C 库有关吗? (我有我的 .c 文件,我编译它以获得 .so

【问题讨论】:

标签: python python-sphinx autodoc


【解决方案1】:

在阅读了您的源文件和日志文件后,我收集了两件事:

  1. 为什么在 conf.py 中注释掉 sys.path.insert(os.path.abspath('../..')) 行?如果您阅读日志,则 RTD 找不到您的模块。那条线会放在正确的路径上。

  2. 您也需要将 C 库作为模拟模块。

【讨论】:

  • 谢谢@kirbyfan64sos!
  • 我用 abspath('../..') 取消了该行的注释。但是如何将我的 C 库作为模拟模块?我试过这样:MOCK_MODULES = ['numpy', 'scipy', 'ctypes', 'numpy.ctypeslib', 'ctypes.cdll', 'libC', 'libC.c', 'libC.so']。但是还是不行……
  • 我还尝试在 MOCK_MODULES 行之前放入我的 conf.py:import ctypes libraryC = ctypes.cdll.LoadLibrary('../../libC.so'),然后我在 MOCK_MODULES 中添加:'libraryC'。不工作...
  • 好了,现在好了!它工作得很好! (问题只是我不是很专心,我忘记在 MOCK_MODULES 列表中添加某些模块(如 netCDF4 和 netcdftime))非常感谢,@kirbyfan64sos!顺便说一句,要加载我的 C 库,我是否需要始终提交我的 .so 文件?因为我通常把.so文件放在.gitignore中。
  • @natalia:你什么意思? RTD 不会导入任何 C 库,但如果您只是通过 ctypes 等使用该库,那么您会没事的。通常不赞成将二进制文件上传到 Git。所以...把它留在你的 .gitignore 中。
猜你喜欢
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2014-01-02
相关资源
最近更新 更多