我有一个项目(https://github.com/jfkominsky/PyHab)本质上是心理变态(http://psychopy.org/)的延伸。我想使用Sphinx和ReadTheDocs来编写代码文档。我在文档中使用了Sphinx中的自动类特性,大部分都在代码中,这在本地构建中非常有用。在ReadTheDocs中,这意味着我需要添加一个需求文件,其中包含psychopy作为需求。这将导致生成以以下方式失败:
/home/docs/checkouts/readthedocs.org/user_builds/pyhab/envs/latest/bin/pip install --exists-action=w --cache-dir /home/docs/checkouts/readthedocs.org/user_builds/pyhab/.cache/pip -rdocs/requirements.txt
Command killed due to excessive memory consumption
我在这方面很业余。有没有办法使用setup.py虚拟环境让psycopy工作?是不是读博士太小气了?我已经注意到精神病本身有一些问题,与RTD建设现在,不确定是否是相关的。。。
编辑:我应该补充一下,我在RTD中使用Cpython2作为我的环境。当我使用CPython3时,我会得到一个不同的失败:
我用Py3再试了一次,得到了一个不同的错误:
错误:生成wxWidgets失败
回溯(最近一次呼叫时间):
文件“build.py”,第1321行,在cmd_build_wx中
wxbuild.main(wxDir(),生成选项)
文件“/tmp/pip-build-7a1lqn7v/wxPython/buildtools/build_wxwidgets.py”,第374行,主
“运行配置时出错”)
文件“/tMP/PIP-Budio7A1LQN7V/WXPythON/BuiToStudio/BuiDuxWxWigWords.Py”,第85行,在ExeliFor中
raise builder.BuildError(消息)
buildtools.builder.BuildError:运行configure时出错
完成命令:build_wx(0m10.842s)
完成命令:构建(0m10.842s)
命令“/home /文档/签出/读文档。org/uSeryBudith/pyHab/Envs/NeX/BI/Python”-uBudi.py-Bug在退出代码1中失败。
最佳答案
我已经设计了一个解决方案,至少对于CPython2.x来说是这样的,RTD需要更好地宣传它的长和短,就是你可以在conf.py中插入一堆“mock”,以便绕过编译文档时不想实际导入的模块。在2.7中的需求文件中需要mock(可能是3.x中的unittest.mock)
这个想法来自这里:http://blog.rtwilson.com/how-to-make-your-sphinx-documentation-compile-with-readthedocs-when-youre-using-numpy-and-scipy/
在常见问题解答:http://read-the-docs.readthedocs.io/en/latest/faq.html#i-get-import-errors-on-libraries-that-depend-on-c-modules
我意识到你可以为任何东西创建模拟模块,如果你使用MagicMock,你可以根据需要为它们添加属性。我花了好几次尝试才得到所有正确的模拟模块(主要是因为RTD环境很难在本地模拟,它只会向您显示它在错误消息中未能导入的第一个模块),但最终,我能够说服RTD,它拥有所需的一切,而不超过其内存限制。
这个解决方案不是针对精神病的。这将适用于任何你有困难的pip安装在RTD上。