0

我正在从事一个涉及 Raspberry Pi 和 PiFace 接口模块的项目。该项目是用 Python 开发的,我在尝试使用 Sphinx 自动记录一些模块时遇到了问题。然而,我们正在使用该pifacedigitalio库,即使我已经在开发机器上安装了该库,Sphinx 拒绝记录该模块并抱怨由于不存在硬件而引发异常。硬件不存在,因为这是开发机器。为了测试软件,我们只使用条件if hwpresent then skip,但我实际上想通过 Sphinx 记录这些部分。做的时候产生的错误make html是:

/home/user/current/working/docs/src.rst:10: WARNING: autodoc: failed to import module u'src.billete'; the following exception was raised:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/sphinx/ext/autodoc.py", line 335, in     import_object
__import__(self.modname)
File "/home/user/current/working/src/bill.py", line 4, in  <module>
piface_obj = piface.PiFaceDigital()
  File "/usr/local/lib/python2.7/dist-packages/pifacedigitalio/core.py", line 82, in __init__
self.init_board()
  File "/usr/local/lib/python2.7/dist-packages/pifacedigitalio/core.py", line 107, in init_board
h=self.hardware_addr, b=self.bus, c=self.chip_select))
NoPiFaceDigitalDetectedError: No PiFace Digital board detected (hardware_addr=0, bus=0, chip_select=0).

有没有办法避免 Sphinx 解释代码而只解析源代码?我尝试pifacedigitalio/core.py使用虚拟返回手动修改,但 Sphinx 只是冻结了。

4

1 回答 1

0

在运行 Sphinx 之前,您必须在 PYTHONPATH 中放置一个包含这些模块的Mock的目录。查看他们的文档,但请注意,您不应该像示例中那样自己搞乱 sys.modules。请改用mock.patch

于 2014-10-15T22:41:20.893 回答