Sphinx:导入错误而不是文档包。有没有办法“跳过”?

时间:2012-08-08 23:29:29

标签: python documentation python-sphinx importerror

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

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

这是samplecode.rst

的一部分
MyClass.py
----------------------------------
.. autoclass:: backlib.classes.MyClass
   :members:

但是当我尝试执行make html时,我收到导入错误,并且未导入“MyClass”(在生成的.html中显示“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页面中,就是这样。

提前谢谢

2 个答案:

答案 0 :(得分:3)

我认为您的狮身人面像sys.path中的conf.py并不包含您的源代码所在的目录。

尝试将以下内容添加到conf.py for sphinx。

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

此外,我认为backlibbacklib/classes是有效的包(它们包含__init__.py个文件。)。

答案 1 :(得分:3)

嗯......我发现了这个问题。

Mike Steder的answer通过谷歌搜索确认了我开始怀疑的东西:Sphinx中的这种类型的 ImporErrors 通常是某种错误配置的相当微不足道的错误。没有什么太复杂了,所以尽管我的源代码所在的目录位于sys.path(正如迈克在答案中所说),我开始挖掘。

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

现在,Sphinx的make html为我的MyClass课程创建了一个不错的条目:)