2012-05-21 35 views
9

我們有一個Sphinx配置,它將爲我們的整個代碼庫生成一大堆HTML文檔。有時候,我正在處理一個文件,我只想看到該文件的HTML輸出,以確保無需運行整個套件即可獲得正確的語法。在一個python文件上運行Sphinx的最簡單方法

我尋找最簡單的命令,我可以在終端上運行這個文件上的獅身人面像,我確信信息已經出現在那裏,但我沒有看到它。

回答

3

獅身人面像處理reST文件(不是直接Python文件)。這些文件可能包含對Python模塊的引用(當您使用autodoc時)。我的經驗是,如果自上一次完整的輸出構建以來只修改了一個Python模塊,則Sphinx不會重新生成所有內容;只有「拉入」特定Python模塊的reST文件才被處理。有一條消息說updating environment: 0 added, 1 changed, 0 removed

要明確處理單個的reST文件,指定它作爲參數傳遞給sphinx-build

sphinx-build -b html -d _build/doctrees . _build/html your_filename.rst 
+2

這給出了sphinx 1.0.3(最新的寫作時)的錯誤。 錯誤:源目錄不包含conf.py文件。 – ideasman42

+1

@ ideasman42:是的,要完成該命令,必須在當前目錄中有一個conf.py文件。您可以使用['-c'](http://sphinx.pocoo.org/invocation.html#cmdoption-sphinx-build-c)選項明確指定conf.py的位置。 – mzjn

1

這是分兩步進行:

  1. 生成與sphinx-的Python模塊第一個文件apidoc。
  2. 使用sphinx-build從第一個文件生成html。

該腳本完成這項工作。在站在與模塊相同的目錄中時調用它,併爲其提供模塊的文件名:

#!/bin/bash 
# Generate html documentation for a single python module 

PACKAGE=${PWD##*/} 
MODULE="$1" 
MODULE_NAME=${MODULE%.py} 

mkdir -p .tmpdocs 
rm -rf .tmpdocs/* 
sphinx-apidoc \ 
    -f -e --module-first --no-toc -o .tmpdocs "$PWD" \ 
    # Exclude all directories 
    $(find "$PWD" -maxdepth 1 -mindepth 1 -type d) \ 
    # Exclude all other modules (apidoc crashes if __init__.py is excluded) 
    $(find "$PWD" -maxdepth 1 -regextype posix-egrep \ 
     ! -regex ".*/$MODULE|.*/__init__.py" -type f) 
rm .tmpdocs/$PACKAGE.rst 
# build crashes if index.rst does not exist 
touch .tmpdocs/index.rst 
sphinx-build -b html -c /path/to/your/conf.py/ \ 
    -d .tmpdocs .tmpdocs .tmpdocs .tmpdocs/*.rst 

echo "**** HTML-documentation for $MODULE is available in .tmpdocs/$PACKAGE.$MODULE_NAME.html" 
相關問題