1. Sphinx
python 으로 개발을 하면서 javadoc와 같은 역할을 하는 문서생성 툴을 찾다 보니 sphinx가 가장 널리 사용되는 툴이라서 간단한 사용법을 정리한다.먼저 Sphinx에 대한 소개는 다음과 같다.
Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license.
Sphinx: http://www.sphinx-doc.org/en/stable/index.html
Sphinx autodoc - automated API documentation: http://www.slideshare.net/shimizukawa/sphinx-autodoc-automated-api-documentation-europython-2015-in-bilbao
2. Sphinx 설치
아래 명령으로 Sphinx를 설치한다.3. 샘플 python project 디렉토리
다음에서 http://pythonhosted.org/an_example_pypi_project/sphinx.html#full-code-example 샘플 코드를 아래와 같이 생성한다.4. docs 디렉토리 및 sphinx-quickstart 데이터 생성
4.1 docs 디렉토리 생성
다음과 같이 문서를 저장할 docs디렉토리를 생성한다.4.2 sphinx-quickstart 실행
4.3 결과
현재까지 진행한 결과 다음과 같은 디렉토리와 파일들이 생긴다.
5. html 문서 생성
docs 디렉토리에서 make html 명령을 수행하면 docs/build/html 아래에 html문서가 생긴다.
docs/build/html/index.html을 브라우저에서 열여보면 다음과 같은 화면을 볼 수 있다.
하지만 Module Index를 클릭해보면 모듈 API문서가 생성되지 않았음을 확인할 수 있다.
6. 모듈 API 문서 생성
6.1 sphinx-apidoc 수행
모듈 API문서를 생성하기 위해서는 sphinx-apidoc 명령을 통해 각 모듈에 해당하는 rst문서를 만들어주어야 한다.
다음과 같은 명령을 수행한다.
결과로 modules.rst와 an_example_pypi_project.rst가 생성된 것을 확인할 수 있다.
6.2 module path 추가
다음으로 docs/source/conf.py 파일을 열고 아래 코드를 추가한다.
6.3 html 생성
6.4 결과확인
모듈 페이지가 제대로 생성된 것을 확인할 수 있다.
7. 테마 변경
다음의 두 페이지를 참고로 doc 문서의 테마를 변경할 수 있다. 여기서는 sphinx_rtd_theme을 적용하는 것을 정리했다.
- http://www.sphinx-doc.org/en/stable/theming.html
- https://github.com/snide/sphinx_rtd_theme
다음 명령으로 sphinx_rtd_theme를 설치한다.
$ pip install sphinx_rtd_theme
import sphinx_rtd_theme html_theme = "sphinx_rtd_theme" html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]다시 docs 디렉토리로 가서 make html명령을 수행하고 docs/build/html/index.html을 브라우저에서 열면 다음과 같은 화면을 확인할 수 있다.
8. github sample
샘플 코드들은 github에서 확인할 수 있다.https://github.com/shjeon78/testSphinx
참고:
Quick Sphinx documentation for Python: http://scriptsonscripts.blogspot.kr/2012/09/quick-sphinx-documentation-for-python.htmlSphinx for Python documentation: http://gisellezeno.com/tutorials/sphinx-for-python-documentation.html