如何使用intersphinx正确链接到PyQt5文档?

时间:2017-11-03 18:06:24

标签: python pyqt5 python-sphinx

我在尝试使用intersphinx链接到PyQt5 docs时遇到了一些麻烦。

尝试交叉引用任何QtCore类(例如QThread)并不像我期望的那样有用。我使用objects.inv解析了python -m sphinx.ext.intersphinx objects.inv可用的here,这会产生gist中显示的输出。

不幸的是,在python命名空间下没有类,只有少数几个函数。相关的所有内容PyQt5都位于sip:class命名空间中。尝试使用标准:py:class:语法在文档中引用它不会链接到任何内容(因为sphinx没有看到该引用连接到任何内容),并且使用:sip:class:会导致警告{{1这是有道理的,因为那不是一个已知的参考代码。

那么,我们如何通过intersphinx访问PyQt的文档(如果我们可以的话)?

2 个答案:

答案 0 :(得分:1)

为了让intersphinx映射适用于我使用PyQt5的项目,我做了以下工作:

  1. 下载原始objects.inv文件
  2. :sip:域名更改为:py:
  3. 重定向大多数PyQt对象的URL以指向Qt网站,这意味着当有人点击我的文档中的QWidget时,它们被定向到{{3},而不是被定向到PyQt-QWidget }}
  4. 添加了别名,以便:class:`QWidget`:class:`QtWidgets.QWidget`:class:`PyQt5.QtWidgets.QWidget`都链接到Qt-QWidget
  5. 如果您想在自己的项目中使用我已修改的objects.inv文件,可以Qt-QWidget将其保存到与conf.py文件相同的目录中,然后编辑您的{{ 1}} intersphinx_mapping中的词典

    conf.py

    如果我的 intersphinx_mapping = { # 'PyQt5': ('http://pyqt.sourceforge.net/Docs/PyQt5/', None), 'PyQt5': ('', 'pyqt5-modified-objects.inv'), } 文件不符合您项目的要求(例如,我没有为所有Qt模块添加别名,只有'pyqt5-modified-objects.inv'QtWidgets和{{1}然后你可以修改自动执行上面步骤1到4的download

    源代码也可用于为PyQt4创建修改后的QtCore文件;但是,PyQt4的原始QtGui文件不包含所有Qt模块和类的完整列表,因此使用objects.inv映射到PyQt4并不是很有用。

    注意:SourceForge团队目前正在解决一些source code,因此执行源代码会引发objects.inv,直到问题得到解决。

答案 1 :(得分:1)

我使用另一种方法来解决此问题。我创建了自定义sphinx插件以即时翻译库存文件以使用res1_2域。它允许选择应该指出的文档(请参见顶部的docstring)。它适用于我的项目,但是我不确定它是否支持所有情况。

此扩展名需要strings[1]扩展名才能在sphinx扩展名中配置,sip在映射中配置

sphinx.ext.intersphinx
PyQt