Doxygen을 사용하여 Python 코드를 문서화하는 방법 [닫힌]


94

C 또는 PHP 코드 문서를 작성하는 Doxygen을 좋아합니다. 다가오는 Python 프로젝트가 있는데 Python에는 /* .. */주석 이없고 자체 문서화 기능이있어 문서화하는 비단뱀 방식 인 것처럼 보입니다.

Doxygen에 익숙한데이를 사용하여 Python 문서를 생성하려면 어떻게해야합니까? 특별히 알아야 할 사항이 있습니까?

답변:


62

이것은 doxygen 웹 사이트에 문서화되어 있지만 여기에 요약하면 다음과 같습니다.

doxygen을 사용하여 Python 코드를 문서화 할 수 있습니다. Python 문서 문자열 구문을 사용할 수 있습니다.

"""@package docstring
Documentation for this module.

More details.
"""

def func():
    """Documentation for a function.

    More details.
    """
    pass

이 경우 주석은 doxygen에 의해 추출되지만 특수한 doxygen 명령 을 사용할 수 없습니다 .

또는 (doxygen의 C 스타일 언어와 유사 #) 멤버 앞의 첫 번째 줄에있는 주석 표시 자 ( )를 두 배로 늘릴 수 있습니다 .

## @package pyexample
#  Documentation for this module.
#
#  More details.

## Documentation for a function.
#
#  More details.
def func():
    pass

이 경우 특수 doxygen 명령을 사용할 수 있습니다. 이 특별한 파이썬 출력 모드는 없습니다,하지만 당신은 분명히 설정하여 결과를 향상시킬 수 있습니다 OPTMIZE_OUTPUT_JAVAYES.

솔직히 그 차이에 약간 놀랐습니다. doxygen이 ## 블록 또는 "" "블록에서 주석을 감지하면 대부분의 작업이 완료되고 다음에서 특수 명령을 사용할 수 있습니다. 아마도 그들은 "" "를 사용하는 사람들이 더 많은 파이썬 문서화 관행을 고수하고 특별한 doxygen 명령을 방해 할 것이라고 기대할까요?


57
파이썬 문서로서의 주석은 나쁘다. 주석은 모듈 관리자를위한 것입니다 (이유와 구현 방법). 모든 문서는 독 스트링 (사용 방법)에 있어야합니다.
jfs

4
Python은 주석을 가져 와서 독 스트링으로 사용하므로 두 형식 모두 pydoc에서 작동합니다.
docwhat

10
일반 독 스트링 내 에서 특수 명령 을 사용할 수있게 해주는 doxypy 를 살펴보십시오 .
Mauro

84

doxypy의 입력 필터는 표준 파이썬 문서화 문자열 형식으로 거의 모든 Doxygen을의 서식 태그를 사용할 수 있습니다. 나는 그것을 사용하여 대규모 혼합 C ++ 및 Python 게임 응용 프로그램 프레임 워크를 문서화하며 잘 작동합니다.


2
질문에 대한 올바른 답변 인이 답변이 맨 아래에있는 것도 슬픈 일입니다. (
Dave Lasley

9
Pythonic docstring을 Doxygen이 사용할 수있는 것으로 변환하므로 doxypypy 를 확인하고 싶을 수도 있습니다.
Feneric

8
Doxypy는 죽고 사라진 것 같습니다.
naught101 dec

24

결국 두 가지 옵션 만 있습니다.

Doxygen을 사용하여 콘텐츠를 생성하거나 Sphinx *를 사용하여 콘텐츠를 생성합니다.

  1. Doxygen : 대부분의 Python 프로젝트에서 선택하는 도구가 아닙니다. 그러나 C 또는 C ++로 작성된 다른 관련 프로젝트를 처리해야한다면 이치에 맞을 수 있습니다. 이를 위해 doxypypy를 사용하여 Doxygen과 Python 간의 통합을 개선 할 수 있습니다 .

  2. Sphinx : Python 프로젝트를 문서화하기위한 사실상의 도구입니다. 여기에는 수동, 반자동 (스텁 생성) 및 완전 자동 (Doxygen 유사)의 세 가지 옵션이 있습니다.

    1. 수동 API 문서의 경우 Sphinx autodoc가 있습니다. API 생성 요소가 포함 된 사용자 가이드를 작성하는 것이 좋습니다.
    2. 반자동의 경우 Sphinx autosummary가 있습니다. sphinx-autogen을 호출하도록 빌드 시스템을 설정하거나 구성을 사용하여 Sphinx를 설정할 수 있습니다 autosummary_generate. 자동 요약이있는 페이지를 설정 한 다음 페이지를 수동으로 편집해야합니다. 옵션이 있지만이 접근 방식에 대한 제 경험은 너무 많은 구성이 필요하다는 것입니다. 그리고 결국에는 새 템플릿을 만든 후에도 버그가 발견되었고 공개 API로 노출 된 항목과 그렇지 않은 항목을 정확하게 결정할 수 없었습니다. 제 생각에는이 도구는 수동 편집이 필요한 스텁 생성에 적합하며 그 이상은 없습니다. 수동으로 끝나는 지름길과 같습니다.
    3. 완전 자동. 이것은 여러 번 비판을 받았으며 오랫동안 우리는 블록의 새로운 아이 인 AutoAPI 가 나올 때까지 Sphinx와 통합 된 좋은 완전 자동 Python API 생성기를 가지고 있지 않았습니다 . 이것은 Python에서 자동 API 생성에 가장 적합합니다 (참고 : 뻔뻔한 자기 홍보).

참고할 다른 옵션이 있습니다.

  • Breathe : 이것은 매우 좋은 아이디어로 시작되었으며 Doxygen을 사용하는 다른 언어로 여러 관련 프로젝트를 작업 할 때 의미가 있습니다. 아이디어는 Doxygen XML 출력을 사용하고이를 Sphinx에 공급하여 API를 생성하는 것입니다. 따라서 Doxygen의 모든 장점을 유지하고 Sphinx에서 문서화 시스템을 통합 할 수 있습니다. 이론적으로 굉장합니다. 이제 실제로 마지막으로 프로젝트를 확인했을 때 생산 준비가되지 않았습니다.
  • pydoctor * : 매우 특별합니다. 자체 출력을 생성합니다. Sphinx와 몇 가지 기본 통합 및 몇 가지 멋진 기능이 있습니다.

autoapi를 사용하는 명령은 무엇입니까? autoapi 모듈을 포함하도록 conf.py를 수정했습니다. 현재 "sphinx-apidoc -o apidocs --full"을 실행합니다.
Sandeep

추가 명령이 필요하지 않습니다. sphinx-build를 사용하여 Sphinx 문서를 빌드하세요. 다음과 같이 Tox와 통합했습니다 : github.com/HPENetworking/cookiecutter_python/blob/module/…
Havok

@Havok 모듈의 모든 요소를 명시 적 변수 에 넣어야 할 때 AutoAPI 가 어떻게 "완전 자동" 인지 수 없습니다 __all__.
buhtz

20

Sphinx는 주로 소스 코드와 독립적으로 작성된 문서의 형식을 지정하는 도구입니다.

Python 독 스트링 에서 API 문서를 생성하기위한 주요 도구는 pdocpydoctor 입니다. 다음은 TwistedBazaar 용으로 pydoctor가 생성 한 API 문서입니다 .

물론 작업하는 동안 독 스트링 만보 고 싶다면 " pydoc "명령 줄 도구와 help()대화 형 인터프리터에서 사용할 수 있는 기능이 있습니다.


2
스핑크스는 소스 코드와 독립적으로 작성된 문서를 기본으로 사용하지만 autodoc 확장을 사용하면 파이썬 모듈의 독 스트링을 쉽게 포함 할 수 있습니다. 동적 특성으로 인해 생성 된 API 문서보다 Python 모듈에 대한 손으로 작성된 문서가 더 유용하다는 것을 알 수 있습니다.
Peter Hoffmann

3
거의 문서화되지 않은 프로젝트에서 클래스 간의 구조와 관계를 파악하려는 경우 "수기"문서를 사용할 수 없습니다.
Ярослав Рахматуллин

13

다른 아주 좋은 문서화 도구는 스핑크스 입니다. 그것은 곧 파이썬 2.6에 사용되는 문서 에 의해 사용되는 장고 와 다른 파이썬 프로젝트의 많은.

스핑크스 웹 사이트에서 :

  • 출력 형식 : HTML (Windows HTML 도움말 포함) 및 LaTeX, 인쇄 가능한 PDF 버전 용
  • 광범위한 상호 참조 : 기능, 클래스, 용어집 및 유사한 정보에 대한 의미 마크 업 및 자동 링크
  • 계층 구조 : 형제, 부모 및 자식에 대한 자동 링크를 사용하여 문서 트리를 쉽게 정의
  • 자동 인덱스 : 일반 인덱스 및 모듈 인덱스
  • 코드 처리 : Pygments 형광펜을 사용한 자동 강조 표시
  • 확장 : 코드 조각 자동 테스트, Python 모듈의 독 스트링 포함 등

11
그것을 시도했습니다. 스핑크스는 그 자체로 매우 흥미로운 도구이지만, 내가 doxygen에서 기대했던 것과는 달랐습니다. 정말 좋은 최종 고객 문서를위한 도구 인 doxygen은 멋진 인쇄 가능한 형식으로 API 개요를보고 싶은 SW 디자이너에게 훨씬 좋습니다.
Zane

3
@Zane 동의합니다. Doxygen 애호가로서 저는 완전 자동 API 참조 가이드 생성을 너무 많이 놓쳤습니다. 이제 다른 옵션을 사용할 수 있으므로 내 대답을 확인하십시오.
Havok 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.