Sphinx Autodoc导入不正确

1 投票
1 回答
1550 浏览
提问于 2025-04-17 10:54

正如标题所说,我正在使用Sphinx为一个Python库生成文档,并且使用了自动文档功能。

我遇到的问题是,自动文档导入器没有正确导入这些库。

Traceback (most recent call last):rs/user                                                                                                                                                         
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Sphinx-1.1.2-py2.7.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/decorators.py", line 4, in <module>
    import response
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/response.py", line 2, in <module>
    from lib.helpers import gtJSONEncoder
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/helpers.py", line 3, in <module>
    from gt import Model, EMAIL_FROM, EMAIL_HOST
  File "/Users/prggmr/Work/chevy/gt/software/gt/gt.py", line 114, in <module>
    from modules.user import views
  File "/Users/prggmr/Work/chevy/gt/software/gt/modules/user/views.py", line 5, in <module>
    from lib import response
ImportError: cannot import name response
Traceback (most recent call last):json                                                                                                                                                            
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Sphinx-1.1.2-py2.7.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/helpers.py", line 2, in <module>
    import response
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/response.py", line 2, in <module>
    from lib.helpers import gtJSONEncoder
ImportError: cannot import name gtJSONEncoder
Traceback (most recent call last):messages                                                                                                                                                        
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Sphinx-1.1.2-py2.7.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
ImportError: No module named helper
Traceback (most recent call last):request                                                                                                                                                         
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Sphinx-1.1.2-py2.7.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/helpers.py", line 2, in <module>
    import response
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/response.py", line 2, in <module>
    from lib.helpers import gtJSONEncoder
ImportError: cannot import name gtJSONEncoder
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Sphinx-1.1.2-py2.7.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/helpers.py", line 2, in <module>
    import response
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/response.py", line 2, in <module>
    from lib.helpers import gtJSONEncoder
ImportError: cannot import name gtJSONEncoder
Traceback (most recent call last):ser                                                                                                                                                             
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Sphinx-1.1.2-py2.7.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
  File "/Users/prggmr/Work/chevy/gt/software/gt/modules/user/models.py", line 6, in <module>
    import gt
  File "/Users/prggmr/Work/chevy/gt/software/gt/gt.py", line 114, in <module>
    from modules.user import views
  File "/Users/prggmr/Work/chevy/gt/software/gt/modules/user/views.py", line 7, in <module>
    from lib.decorators import valid_user
  File "/Users/prggmr/Work/chevy/gt/software/gt/lib/decorators.py", line 7, in <module>
    from gt.modules.user.models import get_user_account, is_login_valid
ImportError: No module named modules.user.models
Traceback (most recent call last):ser                                                                                                                                                             
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Sphinx-1.1.2-py2.7.egg/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
  File "/Users/prggmr/Work/chevy/gt/software/gt/modules/user/views.py", line 2, in <module>
    from gt import app, TEMPLATES_PATH
  File "/Users/prggmr/Work/chevy/gt/software/gt/gt.py", line 114, in <module>
    from modules.user import views
ImportError: cannot import name views

我已经仔细检查了路径,确保它们是正确的,并且我也把它们添加到了系统路径中。

让我感到困惑的是,我可以顺利运行这个应用程序,所有的单元测试也都通过了,代码覆盖率超过95%……但是Sphinx却无法导入它。

1 个回答

2

这看起来像是一个导入循环。试着整理一下你的导入,让它们之间不要互相依赖,形成一个圈。

另外,你也可以尝试调整它们的顺序。比如在 helpers.py 文件中,把第3行代码移动到文件的底部,或者做一些类似的调整。

撰写回答