我們有一個Sphinx配置,它將爲我們的整個代碼庫生成一大堆HTML文檔。有時候,我正在處理一個文件,我只想看到該文件的HTML輸出,以確保無需運行整個套件即可獲得正確的語法。在一個python文件上運行Sphinx的最簡單方法
我尋找最簡單的命令,我可以在終端上運行這個文件上的獅身人面像,我確信信息已經出現在那裏,但我沒有看到它。
我們有一個Sphinx配置,它將爲我們的整個代碼庫生成一大堆HTML文檔。有時候,我正在處理一個文件,我只想看到該文件的HTML輸出,以確保無需運行整個套件即可獲得正確的語法。在一個python文件上運行Sphinx的最簡單方法
我尋找最簡單的命令,我可以在終端上運行這個文件上的獅身人面像,我確信信息已經出現在那裏,但我沒有看到它。
獅身人面像處理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
這是分兩步進行:
該腳本完成這項工作。在站在與模塊相同的目錄中時調用它,併爲其提供模塊的文件名:
#!/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"
這給出了sphinx 1.0.3(最新的寫作時)的錯誤。 錯誤:源目錄不包含conf.py文件。 – ideasman42
@ ideasman42:是的,要完成該命令,必須在當前目錄中有一個conf.py文件。您可以使用['-c'](http://sphinx.pocoo.org/invocation.html#cmdoption-sphinx-build-c)選項明確指定conf.py的位置。 – mzjn