티스토리 뷰
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
'개발 > 파이썬' 카테고리의 다른 글
두 개의 딕셔너리를 연결하여 새로운 딕셔너리를 만들기 (0) | 2023.02.18 |
---|---|
파이썬에서 문자열을 파일로 래핑하기 (0) | 2023.02.18 |
문자열에서 Pandas DataFrame 만들기 (0) | 2023.02.17 |
데이터 프레임에 빈 열을 추가하는 방법 (0) | 2023.02.17 |
튜플 리스트에서 특정 아이템 기준으로 정렬하기 (0) | 2023.02.16 |