4

我正在尝试使用 Sphinx 开始记录一个小型 Python 项目。

我创建了一个samplecode.rst我会尝试为我的一个类(MyClass.py)组织(并自动生成)文档的地方。

这是其中的一部分samplecode.rst

MyClass.py
----------------------------------
.. autoclass:: backlib.classes.MyClass
   :members:

但是当我尝试执行时make html,我得到一个导入错误,并且“ ”没有被导入(在生成的 .html 中MyClass显示“”的一个空条目):MyClass

Traceback (most recent call last):de                                                                                                                                                                                
  File "/usr/lib/pymodules/python2.7/sphinx/ext/autodoc.py", line 329, in import_object
    __import__(self.modname)
  File "/home/borrajax/Projects/myProject/backlib/classes/MyClass.py", line 4, in <module>
    from backlib.database import BaseClass
[ ... ]
    from grokcore.component import sort_components
ImportError: cannot import name sort_components

……再过一会儿……

/home/borrajax/Projects/myProject/docs/source/samplecode.rst:16: (WARNING/2) autodoc can't import/find module 'backlib.classes.MyClass', it reported error: "cannot import name sort_components", please check your spelling and sys.path

/home/borrajax/Projects/myProject/docs/source/samplecode.rst:19: (WARNING/2) don't know which module to import for autodocumenting u'MyClass' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)

让我grokcore的生活变得混乱的东西是一个安装在其中的模块,$HOME/.buildout/eggs/我没有创建也不需要记录。

我已经将所有在$HOME/.buildout/eggs/Pythonpath 中找到的鸡蛋(在 Sphinx 的conf.py文件中)添加了,但这并没有解决任何问题,所以现在我正在尝试一种不同的方法(放弃)所以这里有一个问题:我可以做些什么来跳过这个什么样的错误?

我只是想让评论/home/borrajax/Projects/myProject/backlib/classes/MyClass.py显示在一个漂亮的 html 页面中,仅此而已。

4

2 回答 2

3

我假设您sys.path在 sphinx 中的 forconf.py不包括您的源代码所在的目录。

尝试将以下内容添加到您的conf.pyfor sphinx.xml 中。

sys.path.insert(0, '/home/borrajax/Projects/myProject/')

另外,我假设backlib并且backlib/classes是有效的包(它们包含__init__.py文件。)。

于 2012-08-09T03:03:46.150 回答
3

嗯...我发现了问题。

Mike Steder 的回答证实了我通过谷歌搜索开始怀疑的一些事情:Sphinx 中的这种类型的ImporErrors通常是某种配置错误的相当微不足道的错误。没什么太复杂的,所以即使我有我的源代码所在的目录sys.path(正如迈克在他的回答中建议的那样),我还是开始四处挖掘。

我开始猜测我所做的事情是弄乱了 PythonPath,而我实际上所做的唯一一件事就是通过 Sphinx 的文件添加.eggs找到的(所以肯定有什么问题)。我检查了我的目录并意识到该项目中使用的主 Web 框架 ( Grok ) 的更新已将新版本的 下载到目录中(导致大多数有两个版本)。我完全删除了该目录并重新安装了 Grok 项目(它再次下载了所需的 .eggs,但现在我没有同一个 .egg 的多个版本)。$HOME/.buildout/conf.py$HOME/.buildout/.eggs$HOME/.buildout/.eggs.buildout

现在,Sphinx为我的班级make html创造了一个不错的入口:)MyClass

于 2012-08-09T15:33:33.797 回答