使用 Sphinx 和 KivyMD 创建文档时出错
Error creating Docs with Sphinx and KivyMD
我正在使用 python 使用 KivyMD 制作一个应用程序,现在我想使用 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 文档处理。
有什么想法吗?
好的,我找到了 2 个解决方案,据我所知错误来自 kivymd v0.104.1,所以你可以:
1- 更新 KivyMD 至 v0.104.2
但是,如果你像我一样一直在一个项目中工作,当你注意到很多视觉效果从一个版本到另一个版本时,你会感到轻微的心脏病发作,很多东西看起来都不一样,你可能不想那样,所以,我解决问题的方法是...
2-修改MDApp代码在/kivymd/app.py
在 v0.104.1 中,MDApp class 应该如下所示
class MDApp(App, FpsMonitoring):
theme_cls = ObjectProperty(ThemeManager())
删除 ThemeManager 行,然后在 class
中添加以下内容
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 看起来完全像这样(因此我得到了这样做的想法)。我 运行 我的应用程序,打开了一堆页面,什么都没有,没有问题,视觉效果仍然一样。
我正在使用 python 使用 KivyMD 制作一个应用程序,现在我想使用 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 文档处理。
有什么想法吗?
好的,我找到了 2 个解决方案,据我所知错误来自 kivymd v0.104.1,所以你可以:
1- 更新 KivyMD 至 v0.104.2
但是,如果你像我一样一直在一个项目中工作,当你注意到很多视觉效果从一个版本到另一个版本时,你会感到轻微的心脏病发作,很多东西看起来都不一样,你可能不想那样,所以,我解决问题的方法是...
2-修改MDApp代码在/kivymd/app.py
在 v0.104.1 中,MDApp class 应该如下所示
class MDApp(App, FpsMonitoring):
theme_cls = ObjectProperty(ThemeManager())
删除 ThemeManager 行,然后在 class
中添加以下内容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 看起来完全像这样(因此我得到了这样做的想法)。我 运行 我的应用程序,打开了一堆页面,什么都没有,没有问题,视觉效果仍然一样。