首页 > 解决方案 > 尝试在阅读文档时创建 Sphinx 文档时 - 抱怨 libpulse-mainloop-glib.so.0

问题描述

文档是从这个 repo 构建的:https ://github.com/djotaku/ELDonationTracker/tree/26858f5d174bb44658f59a7e080265bd1a8b3216

输出在这里:https ://eldonationtracker.readthedocs.io/en/latest/index.html

在我写这个问题的时候(因此为什么我使用树 URL 以防将来有人发现这个问题),gui 和 call_tracker 模块的文档失败了。(它会产生一个只有标题的空白页面)。

这在我的机器上运行良好。

当我查看 read-the-docs 构建输出时,我看到了这个错误: WARNING: autodoc: failed to import module 'call_tracker' from module 'eldonationtracker'; 引发了以下异常:libpulse-mainloop-glib.so.0:无法打开共享对象文件:没有这样的文件或目录

GUI 也一样。

这些模块可以在以下位置找到:

https://github.com/djotaku/ELDonationTracker/blob/26858f5d174bb44658f59a7e080265bd1a8b3216/eldonationtracker/call_tracker.py

https://github.com/djotaku/ELDonationTracker/blob/26858f5d174bb44658f59a7e080265bd1a8b3216/eldonationtracker/gui.py

我该怎么做才能使此文档正常工作?

谢谢!

标签: read-the-docs

解决方案


我有同样的问题。这是因为 PyQt5.QtMultimedia 试图打开该libpulse-mainloop-glib.so.0pulseaudio 库,该库未安装在 ReadTheDocs 系统上。您的gui.pyimports call_tracker,所以它只是在传播错误,这就是它也不起作用的原因。

我通过将 QtMultimedia 导入包装在 try 块中来解决此问题:

try:
    from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
except:
    pass

因为 ReadTheDocs 实际上并不运行代码的多媒体部分(只是导入模块),所以导入失败并不重要。如果您确实有在导入时执行 QMultimedia 内容的代码,那么您可能需要额外的检查和解决方法。


推荐阅读