스핑크스 빌드 실패-autodoc이 모듈을 가져 오거나 찾을 수 없습니다.


104

저는 스핑크스를 시작하려고 노력 중이며 끊임없는 문제가있는 것 같습니다.

명령: docs/sphinx-quickstart

나는 모든 질문에 답하고 모든 것이 잘 작동합니다.

명령: docs/ls

모든 것이 정상적으로 보입니다. 결과:build Makefile source

명령: sphinx-build -d build/doctrees source build/html

작동하는 것 같습니다. index.html 파일을 열고 원하는 "쉘"을 볼 수있었습니다.

실제 소스 코드를 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/MakefileHTML ys_utils과 내가 가질 다른 모든 모듈 을 생성 해야 합니다 .

답변:


87

.NET Framework에없는 모듈이므로 Autodoc에서 모듈을 찾을 수 없습니다 sys.path.

에 모듈 경로를 포함 sys.path해야합니다 conf.py. 을 conf.py(를 sys) 가져온 직후 상단 sys.path.insert()을 보면 적응할 수 있는 진술이 있습니다.

그건 그렇고 : MakefileSphinx 에서 만든을 사용하여 문서를 만들 수 있습니다. 그냥 전화 해

make

옵션을 보려면.

시도하기 전에 문제가 발생한 경우 :

make clean

실행하기 전에 make html.


59

그것은 같은 소리 os.path.append()사람들에 대한 확인을하고있다, 그러나 당신이 따르는 경우 conf.py템플릿을, 당신의 전면에 모듈 경로를 삽입합니다 sys.path사용 os.path.insert(0, ...), 그냥 여분을 추가.

import os
import sys
sys.path.insert(0, os.path.abspath('..'))

sphinx별도의 buildsource디렉토리 를 사용하도록 프로젝트를 설정 한 경우 해당 호출은 다음 과 같아야합니다.

sys.path.insert(0, os.path.abspath('../..'))

32

conf.py

프로젝트 폴더에 경로를 추가하기 만하면됩니다.

sys.path.append('/home/workspace/myproj/myproj')

8
경로 하드 코딩은 conf.py.
firegurafiku 2015 년

18
이 같은 프로젝트 구조가있는 경우 /app, /docs... 당신이 사용하는 수도 sys.path.append(os.path.join(os.path.dirname(__name__), '..'))사용하여 다음과.. automodule:: app 당신의 .rst-file.
fnkr

3

만약

  1. 모듈 루트 경로가 conf.py에 올바르게 설정되었습니다.
  2. __init__.py 올바르게 배치
  3. 첫 번째 구문이 정확합니다.

autodoc이 여전히 모듈을 찾을 수 없습니다 ...

해당 모듈의 종속성이 Python 환경에서 충족되지 않았기 때문일 수 있습니다. 모든 import 문이 모듈 내에서 작동하는지 확인해야합니다.


4
왜 스핑크스에 의존성이 필요한지 모르겠습니다. 독 스트링 내에서 테스트를 할 수 있기 때문입니까? 이것을 피할 수 있습니까 (패키지가 필요하지 않습니다. 스핑크스가 docstring을 html로 구문 분석하기를 원합니다).
cglacet

이러한 종속성을 가져 오지 않으려면 conf.py 파일에서 autodoc_mock_imports를 사용하십시오. sphinx-doc.org/en/master/usage/extensions/…
filip stepniak

1

처음으로 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는 그것과 같은 디렉토리에 있습니다.


2
어디로 갈까요? 나는이 index.rst/docs/source/ys_utils. 나는 이것이 docs버전에 있어야한다고 생각 하는가? .NET index.rst으로 만든 기본 파일을 사용하고 sphinx-quickstart있습니다.
Rico

-1 트레이스 백에서 모듈이에없는 sys.path것이 분명해 보이므로 autodoc cn 은 해당 모듈을 찾지 못합니다. .rst파일이 발견된다.
bmu

1

이 같은 오류가 발생했지만 다른 답변에서 설명한 것과 완전히 다른 이유 때문에 발생했습니다.

.. automethod:: mymodule.func지시는 실제로 다음과 같아야합니다.

.. automethod:: mymodule::func`

0

당신은 사용할 수 있습니다 Pweave 및 noweb 그들에 포함 된 코드의 출력을 포함하는 첫 번째 문서를 생성하기 위해 포맷. 기본적으로 다음과 같이 표시된 청크에 포함 된 Python 코드를 사용하여 rst 파일을 작성합니다.

<<echo=False>>=
print("some text that will appear in the rst file")
@

Pweave는 해당 청크를 실행하고 결과 rst 파일의 출력으로 대체하여 스핑크스와 함께 사용할 수 있습니다. 참고 항목 Pweave 나머지 예를 보이는 방법의 자세한 내용입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.