【问题标题】:Error creating Docs with Sphinx and KivyMD使用 Sphinx 和 KivyMD 创建文档时出错
【发布时间】:2021-08-14 16:38:48
【问题描述】:

我正在用 KivyMD 和 python 制作一个应用程序,现在我想用 Sphinx 制作一个快速文档。但是每次我在命令行上使用“make html”时都会出现以下错误:

    WARNING: autodoc: failed to import module 'test'; the following exception was raised:
Traceback (most recent call last):
  File "c:\users\iuryck\anaconda3\lib\site-packages\sphinx\ext\autodoc\importer.py", line 70, in import_module
    return importlib.import_module(modname)
  File "c:\users\iuryck\anaconda3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\iuryck\OneDrive\Documents\VSCode\test\test.py", line 1, in <module>
    from kivymd.app import MDApp
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivymd\app.py", line 62, in <module>
    class MDApp(App, FpsMonitoring):
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivymd\app.py", line 63, in MDApp
    theme_cls = ObjectProperty(ThemeManager())
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivymd\theming.py", line 860, in __init__
    self.rec_shadow = Atlas(f"{images_path}rec_shadow.atlas")
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivy\atlas.py", line 188, in __init__
    self._load()
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivy\atlas.py", line 216, in _load
    ci = CoreImage(subfilename)
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivy\core\image\__init__.py", line 561, in __init__
    self.filename = arg
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivy\core\image\__init__.py", line 754, in _set_filename
    image = ImageLoader.load(
  File "c:\users\iuryck\anaconda3\lib\site-packages\kivy\core\image\__init__.py", line 463, in load
    raise Exception('Unknown <%s> type, no loader found.' % ext)
Exception: Unknown <png> type, no loader found.

如您所见,Sphinx 可以找到 Kivy 模块,也可以找到代码。所以这不是我见过的目录问题或环境问题。

通过安装 KivyMD 和 Sphinx 并使用以下代码可以简单地复制它:

from kivymd.app import MDApp

if __name__ == "__main__":
    print('Hello World')

然后对其进行正常的 sphinx 文档处理。

有什么想法吗?

【问题讨论】:

  • 我无法复制。在确保安装了 Sphinx 和 KivyMD 后,我运行了您的代码,使用所有默认值运行 sphinx-quickstart,然后运行 ​​make html,它运行良好。这是在带有 Cygwin 的 Win10 上。
  • @MattDMo 您是否安装了任何依赖项或直接 pip install 两者?我也打赢10。也许这是蟒蛇的问题?我确实从 anaconda 终端运行了终端,确保它在同一个环境中。
  • 我已经安装了 Sphinx 和 Kivy 以及依赖项,我只需要 pip install KivyMD,它的所有依赖项都已经存在。我不使用 Anaconda,所以我不知道这是否与它有关。我会卸载两者并从头开始重试,强制更新依赖项。
  • 另外,再次查看您的错误,我建议您将文件从 test.py 重命名为 kivymd_test.py 或类似的名称。看起来有些东西正在尝试导入 test 模块,而它正在导入您的文件。
  • @MattDMo 我想你忘记了 sphinx-apidoc -o [OUTPUT_DIR] [INPUT_DIR],否则它不会读取你的代码。我按照你说的做了,也没有错误,但它没有记录代码

标签: python kivy python-sphinx kivymd


【解决方案1】:

好的,我找到了2个解决方案,据我所知,错误来自kivymd v0.104.1,所以你可以:

1- 将 KivyMD 更新到 v0.104.2

但是,如果您像我一样在一个项目中工作了很多,您会感到轻微的心脏病发作,因为您会注意到很多视觉效果已经从一个版本更改为另一个版本,很多东西看起来都不同,而您可能没有想要那个,所以,我对这个问题的解决方案是......

2- 修改 /kivymd/app.py 中的 MDApp 代码

在 v0.104.1 中,MDApp 类应如下所示

class MDApp(App, FpsMonitoring):
    theme_cls = ObjectProperty(ThemeManager())

删除 ThemeManager 行,然后在类中添加以下内容

def __init__(self, **kwargs):
    super().__init__(**kwargs)
    self.theme_cls = ThemeManager()

所以整个事情应该是这样的:

class MDApp(App, FpsMonitoring):
    theme_cls = ObjectProperty()
            
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.theme_cls = ThemeManager()

如果您想知道这是否安全并且不会导致将来出现错误,0.104.2 版本中的 /kivymd/app.py 看起来就像这样(因此我得到了这样做的想法)。我运行了我的应用程序,打开了一堆页面,什么都没有,没有问题,并且视觉效果保持不变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多