Python 如何在readthedocs中满足sip(或pyqt)的要求。

5

我希望在readthedocs.org上发布我的项目https://bitbucket.org/oaltun/opn的文档。

构建失败。日志https://readthedocs.org/builds/opn/2247789/中显示了不同的错误,但第一个错误是“没有名为sip的模块”。

项目需要pyqt,而pyqt需要sip。

通常情况下,在这种情况下,您会将缺少的软件包添加到setup.py中,并选中readthedocs.org选项以创建虚拟环境。我确实勾选了创建虚拟环境的框。但我无法将sip或pyqt添加到setup.py中。

问题在于pyqt和sip没有使用setuptools,因此无法通过pip安装它们。因此,您无法将它们添加到setup.py中(即使在我的本地机器上也无法成功)。

在我的本地环境中,我使用(ana)conda安装pyqt。但我认为readthedocs.org使用pip调用依赖项。

那么,如何让我的虚拟环境包含sip?


需要一些谷歌搜索,但是阅读了这个(http://docs.readthedocs.org/en/latest/faq.html#i-get-import-errors-on-libraries-that-depend-on-c-modules)。你可能也会对我发现的这个LGPL许可的代码感兴趣(免责声明:我与该项目无关):https://github.com/pyudev/pyudev/blob/develop/doc/conf.py#L37 - three_pineapples
@three_pineapples:谢谢你。 - Zargo
您还可以在readthedocs的设置中指定另一个requirements.txt文件。 - Trilarion
1个回答

2

关键是模拟这些接口:

import mock 
MOCK_MODULES = ['sip', 'PyQt4', 'PyQt4.QtGui']
sys.modules.update((mod_name, mock.MagicMock()) for mod_name in MOCK_MODULES)

请注意,您还必须模拟根包“PyQt4”,否则将会出现导入错误。

请仅返回翻译文本:或者简单地使用[autodoc_mock_imports](https://dev59.com/lGUo5IYBdhLWcg3woAqu#15912502) - ederag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接