我在尝试使用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的文档(如果我们可以的话)?
答案 0 :(得分:1)
为了让intersphinx
映射适用于我使用PyQt5的项目,我做了以下工作:
:sip:
域名更改为:py:
QWidget
时,它们被定向到{{3},而不是被定向到PyQt-QWidget }} :class:`QWidget`
,:class:`QtWidgets.QWidget`
和:class:`PyQt5.QtWidgets.QWidget`
都链接到Qt-QWidget 如果您想在自己的项目中使用我已修改的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