我正试图开始使用Sphinx并且似乎有无情的问题。
命令:docs/sphinx-quickstart
我回答所有问题,一切正常。
命令:docs/ls
一切看起来都很正常。结果:build Makefile source
命令:sphinx-build -d build/doctrees source build/html
它似乎工作。我能够打开index.html文件,看到我想要的“shell”。
当我尝试将我的实际源代码作为source
文件夹时,我遇到了问题。
命令:sphinx-build -d build/doctrees ../ys_utils build/html
结果:
Making output directory...
Running Sphinx v1.1.3
loading pickled environment... not yet created
No builder selected, using default: html
loading intersphinx inventory from http://docs.python.org/objects.inv...
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
__import__(self.modname)
ImportError: No module named ys_utils
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
__import__(self.modname)
ImportError: No module named ys_utils.test_validate_ut
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
__import__(self.modname)
ImportError: No module named ys_utils.git_utils
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/ext/autodoc.py", line 321, in import_object
__import__(self.modname)
ImportError: No module named setup.setup
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:4: WARNING: autodoc can't import/find module 'ys_utils', it reported error: "No module named ys_utils", please check your spelling and sys.path
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:10: WARNING: autodoc can't import/find module 'ys_utils.test_validate_ut', it reported error: "No module named ys_utils.test_validate_ut", please check your spelling and sys.path
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:12: WARNING: don't know which module to import for autodocumenting u'UnitTests' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:18: WARNING: autodoc can't import/find module 'ys_utils.git_utils', it reported error: "No module named ys_utils.git_utils", please check your spelling and sys.path
/home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:24: WARNING: autodoc can't import/find module 'setup.setup', it reported error: "No module named setup.setup", please check your spelling and sys.path
WARNING: master file /home/ricomoss/workspace/nextgen/ys_utils/index.rst not found
looking for now-outdated files... none found
pickling environment... done
checking consistency... /home/ricomoss/workspace/nextgen/ys_utils/ys_utils.rst:: WARNING: document isn't included in any toctree
done
preparing documents... done
writing output... [ 50%] index
Exception occurred:
File "/usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.egg/sphinx/environment.py", line 1213, in get_doctree
f = open(doctree_filename, 'rb')
IOError: [Errno 2] No such file or directory: '/home/ricomoss/workspace/nextgen/docs/build/doctrees/index.doctree'
The full traceback has been saved in /tmp/sphinx-err-jjJ7gM.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
Either send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>,
or report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!
我是Sphinx的全新手,对这种文档来说相对较新。有人可以提供一些建议吗?
编辑:
我希望能够使用Makefile来处理这个问题。截至目前,我的项目中有两个文件夹。
nextgen/ls
docs ys_utils
我需要nextgen/docs/Makefile
为ys_utils
和我将要拥有的所有其他模块生成HTML。
Autodoc无法找到您的模块,因为它们不在sys.path
中。
您必须在sys.path
的conf.py
中包含模块的路径。看看你的conf.py
的顶部(在导入sys
之后),有一个sys.path.insert()
声明,你可以适应。
顺便说一句:你可以使用Sphinx创建的Makefile
来创建你的文档。打电话吧
make
看看选项。
如果出现问题,请尝试:
make clean
在运行make html
之前。
在conf.py
只需添加项目文件夹的路径即可。
sys.path.append('/home/workspace/myproj/myproj')
这听起来像os.path.append()
对人们工作正常,但如果你按照conf.py
模板,你会使用sys.path
将模块路径插入os.path.insert(0, ...)
的前面,并添加一个额外的.
import os
import sys
sys.path.insert(0, os.path.abspath('..'))
如果您已将sphinx
项目设置为使用单独的build
和source
目录,则该调用应改为:
sys.path.insert(0, os.path.abspath('../..'))
我想我第一次尝试将文件添加到toctree时就这样做了。我想是因为我省略了:maxdepth行和文件名之间的空白行。
.. Animatrix Concepts documentation master file, created by
sphinx-quickstart on Thu Mar 22 18:06:15 2012.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to Animatrix Concepts documentation!
============================================
Contents:
.. toctree::
:maxdepth: 2
stuff
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
上面是我的index.rst文件。 stuff.rst与它位于同一目录中。
您可以使用Pweave和noweb格式生成包含嵌入其中的代码输出的第一个文档。基本上,你编写你的第一个文件,python代码嵌入标记的块中,如下所示:
<<echo=False>>=
print("some text that will appear in the rst file")
@
并且Pweave将执行这些块,并将它们的输出替换为生成的rst文件,然后您可以将其与sphinx一起使用。有关它的外观的更多详细信息,请参阅Pweave reST example。
我得到了同样的错误,但这是由与其他答案中解释的完全不同的原因引起的。
我的.. automethod:: mymodule.func
指令实际应该是:
.. automethod:: mymodule::func`