无法使用sphinx和poem导入模块本身

问题描述 投票:0回答:1

我想要什么

https://github.com/ShortArrow/pyxlimg

我想在上述项目中发布以下文档。

https://pyxlimg.readthedocs.io/en/latest/ https://readthedocs.org/projects/pyxlimg/

错误

/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/bin/python -m sphinx -T -b html -d _build/doctrees -D language=en . _build/html
Running Sphinx v3.5.2
loading translations [en]... done
making output directory... done
WARNING: html_static_path entry '_static' does not exist
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 3 source files that are out of date
updating environment: [new config] 3 added, 0 changed, 0 removed
reading sources... [ 33%] index
reading sources... [ 66%] modules
reading sources... [100%] pyxlimg

WARNING: autodoc: failed to import module 'xlimg' from module 'pyxlimg'; the following exception was raised:
No module named 'pyxlimg'
WARNING: autodoc: failed to import module 'pyxlimg'; the following exception was raised:
No module named 'pyxlimg'
looking for now-outdated files... none found
pickling environment... done
checking consistency... /home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/checkouts/latest/docs/modules.rst: WARNING: document isn't included in any toctree
done
preparing documents... done
writing output... [ 33%] index
writing output... [ 66%] modules
writing output... [100%] pyxlimg

generating indices... genindex done
writing additional pages... search done
copying static files... done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded, 4 warnings.

The HTML pages are in _build/html.
Updating searchtools for Read the Docs search...
/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/bin/python -m sphinx -T -b readthedocssinglehtmllocalmedia -d _build/doctrees -D language=en . _build/localmedia
Running Sphinx v3.5.2
loading translations [en]... done
making output directory... done
WARNING: html_static_path entry '_static' does not exist
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [readthedocssinglehtmllocalmedia]: all documents
updating environment: 0 added, 1 changed, 0 removed
reading sources... [100%] pyxlimg

WARNING: autodoc: failed to import module 'xlimg' from module 'pyxlimg'; the following exception was raised:
No module named 'pyxlimg'
WARNING: autodoc: failed to import module 'pyxlimg'; the following exception was raised:
No module named 'pyxlimg'
looking for now-outdated files... none found
pickling environment... done
checking consistency... /home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/checkouts/latest/docs/modules.rst: WARNING: document isn't included in any toctree
done
preparing documents... done
assembling single document... done
writing... done
writing additional files... done
copying static files... done
copying extra files... done
dumping object inventory... done
build succeeded, 4 warnings.

The HTML page is in _build/localmedia.
Updating searchtools for Read the Docs search...

我试过了

这将在本地计算机上成功。

.\.venv\Scripts\activate
sphinx-apidoc -f -o ./docs ./pyxlimg
sphinx-build -b html ./docs ./docs/_build

我认为

我不知道该怎么做,因为无法在本地环境中重现该错误。如果您能给我一些建议,我将不胜感激。

注意

我正在使用以下命令告诉readthedocs“poetry”的配置。

poetry export --dev -f requirements.txt > requirements.txt

咨询后

我在@Steve Piercy 留言后尝试过。看来错误消息有所减少。将

sys.path.insert(0, os.path.abspath('..'))
sys.path.insert(0, os.path.abspath('../pyxlimg'))
sys.path.insert(0, os.path.abspath('../pyxlimg/xlimg'))
添加到
conf.py
。我仍然收到错误消息。
WARNING: autodoc: failed to import module 'xlimg' from module 'pyxlimg'

git clone --no-single-branch --depth 50 https://github.com/ShortArrow/pyxlimg.git .
git checkout --force origin/main
git clean -d -f -f
python3.8 -mvirtualenv --system-site-packages /home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest
/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/bin/python -m pip install --upgrade --no-cache-dir pip setuptools
/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/bin/python -m pip install --upgrade --no-cache-dir -I mock==1.0.1 pillow==5.4.1 alabaster>=0.7,<0.8,!=0.7.5 commonmark==0.8.1 recommonmark==0.5.0 sphinx sphinx-rtd-theme readthedocs-sphinx-ext<2.2
/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/bin/python -m pip install --exists-action=w --no-cache-dir -r requirements.txt
cat docs/conf.py
/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/bin/python -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html
/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/bin/python -m sphinx -T -b readthedocssinglehtmllocalmedia -d _build/doctrees -D language=en . _build/localmedia
Running Sphinx v3.5.4
loading translations [en]... done
making output directory... done
WARNING: html_static_path entry '_static' does not exist
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [readthedocssinglehtmllocalmedia]: all documents
updating environment: 0 added, 1 changed, 0 removed
reading sources... [100%] pyxlimg

WARNING: autodoc: failed to import module 'xlimg' from module 'pyxlimg'; the following exception was raised:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/lib/python3.8/site-packages/sphinx/ext/autodoc/importer.py", line 71, in import_module
    return importlib.import_module(modname)
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/checkouts/latest/pyxlimg/xlimg.py", line 58, in <module>
    class Sheet(Element):
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/checkouts/latest/pyxlimg/xlimg.py", line 66, in Sheet
    def __Pictures(self) -> list[Picture]:
TypeError: 'type' object is not subscriptable

looking for now-outdated files... none found
pickling environment... done
checking consistency... /home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/checkouts/latest/docs/modules.rst: WARNING: document isn't included in any toctree
done
preparing documents... done
assembling single document... done
writing... done
writing additional files... done
copying static files... done
copying extra files... done
dumping object inventory... done
build succeeded, 3 warnings.

The HTML page is in _build/localmedia.
Updating searchtools for Read the Docs search...

我认为阅读时出现错误

sphinx.ext.autodoc
pyxlimg.rst

WARNING: autodoc: failed to import module 'xlimg' from module 'pyxlimg'; the following exception was raised:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/lib/python3.8/site-packages/sphinx/ext/autodoc/importer.py", line 71, in import_module
    return importlib.import_module(modname)
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/envs/latest/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/checkouts/latest/pyxlimg/xlimg.py", line 58, in <module>
    class Sheet(Element):
  File "/home/docs/checkouts/readthedocs.org/user_builds/pyxlimg/checkouts/latest/pyxlimg/xlimg.py", line 66, in Sheet
    def __Pictures(self) -> list[Picture]:
TypeError: 'type' object is not subscriptable
python python-sphinx read-the-docs python-poetry
1个回答
0
投票

模块导入错误是因为autodoc需要安装你的包。 使用诗歌时,您需要

  1. 将文档特定的包(sphinx、sphinx-rtd-theme 等)添加到 Poetry 文档组依赖项,如 Poetry 组依赖项文档中所述。
  2. 告诉
    .readthedocs.yaml
    中的RTD使用Poetry进行包管理(来自Brownie Broke的博客文章的解决方案):
build:
  os: ubuntu-22.04
  tools:
    python: "3.10"
  jobs:
    post_create_environment:
      - pip install poetry
      - poetry config virtualenvs.create false
    post_install:
      - poetry install --with docs
© www.soinside.com 2019 - 2024. All rights reserved.