티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

sphinx-build fail - autodoc can't import/find module

sphinx-build가 실패 - autodoc에서 모듈을 가져오거나 찾을 수 없음

 문제 내용 

I'm trying to get started with Sphinx and seem to have relentless problems.

저는 Sphinx를 시작하려고 하고, 지속적인 문제가 발생하는 것 같습니다.

 

Command: docs/sphinx-quickstart

명령어: docs/sphinx-quickstart

 

I answer all the questions and everything works fine.

저는 모든 질문에 대답하고 모든 것이 잘 작동되었다는 것을 의미합니다.

 

Command: docs/ls

명령어: docs/ls

 

Everything looks normal. Result: build Makefile source

모든 것이 정상처럼 보입니다. 결과: build Makefile source

 

Command: sphinx-build -d build/doctrees source build/html

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

 

It seems to work. I was able to open the index.html file and see a "shell" of what I'm wanting.

작동하는 것 같습니다. index.html 파일을 열어보면 제가 원하는 것의 구조가 보입니다.

 

When I try and put my actual source code as the source folder I run into problems.

실제 소스 코드를 소스 폴더로 사용하려고 하면 문제가 발생합니다.

 

Command: sphinx-build -d build/doctrees ../ys_utils build/html

명령어 : sphinx-build -d build/doctrees ../ys_utils build/html

 

Result:

결과:
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!

 

What is wrong, and how can I fix it?

무엇이 문제이고 어떻게 해결할 수 있는지 알려주세요.

 

Edit:

편집

 

I'd like to be able to use a Makefile to handle this. As of now I have two folders in my project.

지금은 내 프로젝트에 두 개의 폴더가 있습니다. 이것을 처리하기 위해 Makefile을 사용하고 싶습니다.

 

nextgen/ls

docs ys_utils

I need nextgen/docs/Makefile to generate the HTML for ys_utils and all other modules I'm going to have.

nextgen/docs/Makefile를 사용하여 ys_utils 및 다른 모듈의 HTML을 생성해야합니다.

 

 

 

 높은 점수를 받은 Solution 

Autodoc can't find your modules, because they are not in sys.path.

Autodoc가 모듈을 찾을 수 없습니다. 이는 모듈이 sys.path에 없기 때문입니다.

 

You have to include the path to your modules in in the sys.path in your conf.py. Look at the top of your conf.py (just after the import of sys), there is a sys.path.insert() statement, which you can adapt.

conf.py 파일 맨 위에 (sys를 import한 후) sys.path.insert() 문이 있습니다. 해당 문장을 수정하여 모듈의 경로를 sys.path에 포함시켜야 합니다.

 

By the way: you can use the Makefile created by Sphinx to create your documentation. Just call

그리고: Sphinx에서 생성한 Makefile을 사용하여 문서를 만들 수 있습니다. 다음과 같이 호출하면 됩니다.
make

 

to see the options.

옵션을 보려면 다음을 호출하세요.

 

If something went wrong before try:

만약 이전에 오류가 발생했다면 다음을 시도해보세요:
make clean

 

before running make html.

make html를 실행하기 전에 말이죠.

 

 

 

 가장 최근 달린 Solution 

I don't know why (maybe in my case autodoc couldn't install my package), but I always got module-not-found errors until I explicitly included all directories containing modules to the path.

저는 왜 그런지 모르겠지만 (아마 제 경우 autodoc가 패키지를 설치하지 못했을 수도 있습니다), 제 모든 모듈이 있는 디렉토리를 명시 적으로 경로에 포함시키지 않으면 항상 모듈을 찾을 수 없다는 오류가 발생합니다.

 

For the following example folder structure

다음과 같은 예시 폴더 구조를 가지는 경우에는
project_dir
|- setup.py
|- src
|  |- __init__.py
|  |- source1.py
|  |- sub_project
|     |- __init__.py
|     |- source2.py 
|- docs
    |- conf.py
    |- source
    |  |- index.rst
    |- _build       

 

I included

저는 아래 코드를..
for x in os.walk('../../src'):
  sys.path.insert(0, x[0])

 

to the beginning of conf.py such that all involved directories would be added.

conf.py 파일의 시작 부분에 모든 관련 디렉토리가 추가되도록하여 다음 예시 폴더 구조와 같이 다음과 같이 포함시켰습니다.

 

 

 

출처 : https://stackoverflow.com/questions/10324393/sphinx-build-fail-autodoc-cant-import-find-module

반응형
댓글
공지사항
최근에 올라온 글