Tl; dr
Когда я создаю sphinx do c локально, он строится, как ожидалось, но GitHub Sphinx Build Action создает пустой do c. Это должно быть связано с тем, что sphinx-action не находит целевые python модули, как указано в conf.py
.
Есть идеи для правильной настройки sphinx-action или conf.py
?
Ожидаемый Sphinx Do c
Когда я собираю sphinx do c локально на моей машине через cd docs/ && make html
, полученный html выглядит так, как ожидалось
![expected_sphinx_doc](https://user-images.githubusercontent.com/7808560/89300342-5b01aa00-d668-11ea-9e97-86ae469735a2.png)
Empty Sphinx Doc generated by sphinx-action
My .github/workflows/sphinx_action.yml
includes
steps:
# Checkout repo
- uses: actions/checkout@v2
# Build sphinx doc
- uses: ammaraskar/sphinx-action@master
with:
docs-folder: "docs/"
and generates an empty skeleton of a Sphinx Doc
![output_shpinx_doc](https://user-images.githubusercontent.com/7808560/89301152-93ee4e80-d669-11ea-94ad-83d8f6cfcf54.png)
Project Setup
Project Structure
.
├── docs
│ ├── conf.py
│ ├── index.rst
│ ├── make.bat
│ ├── Makefile
│ ├── requirements.txt
│ └── sync.log
├── .github
│ └── workflows
│ └── sphinx_action.yml
├── .gitignore
├── mypackage
│ ├── __init__.py
│ ├── subfolder
│ │ ├── __init__.py
│ │ └── subclass.py
│ └── superclass.py
├── Pipfile
├── Pipfile.lock
└── README.md
conf.py
Configuration
My docs/conf.py
looks as follows. (Mind that I added three entries to the sys.path
manually in order to make Sphinx find all python modules.)
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
from m2r import MdInclude
sys.path.insert(0, os.path.abspath('..'))
sys.path.insert(0, os.path.abspath('../mypackage'))
sys.path.insert(0, os.path.abspath('../mypackage/subfolder'))
# -- Project information -----------------------------------------------------
project = 'MyPackage'
copyright = ''
author = 'Testuser'
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['sphinx.ext.autodoc',
'recommonmark'
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
#
source_suffix = ['.rst', '.md']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# document the init of a class, too
autoclass_content = 'both'
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'nature'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# from m2r to make `mdinclude` work
def setup(app):
config = {
# 'url_resolver': lambda url: github_doc_root + url,
'auto_toc_tree_section': 'Contents',
'enable_eval_rst': True,
}
# from m2r to make `mdinclude` work
app.add_config_value('no_underscore_emphasis', False, 'env')
app.add_config_value('m2r_parse_relative_links', False, 'env')
app.add_config_value('m2r_anonymous_references', False, 'env')
app.add_config_value('m2r_disable_inline_math', False, 'env')
app.add_directive('mdinclude', MdInclude)
Pipfile
[[source]]
verify_ssl = true
url = "https://pypi.org/simple"
name = "pypi"
[dev-packages]
[packages]
m2r = {index = "pypi",version = "==0.2.1"}
pandas = {index = "pypi",version = "==1.0.3"}
sphinx = {index = "pypi",version = "==3.1.0"}
recommonmark = {index = "pypi",version = "==0.6.0"}
mypackage = "*"
[requires]
python_version = "3.8"
Примечание: Я разместил этот вопрос также как проблему в репозитории сфинкс-действия на GitHub .