我正在尝试使用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页面中,就是这样。
提前谢谢
答案 0 :(得分:3)
我认为您的狮身人面像sys.path
中的conf.py
并不包含您的源代码所在的目录。
尝试将以下内容添加到conf.py
for sphinx。
sys.path.insert(0, '/home/borrajax/Projects/myProject/')
此外,我认为backlib
和backlib/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
课程创建了一个不错的条目:)