我正在使用GitHub Actions构建一些Sphinx文档并将其部署到GitHub页面,但遇到了一个问题。当操作运行时,我得到错误:
Notebook error:
183
PandocMissing in examples/Admissions Data.ipynb:
184
Pandoc wasn't found.
185
Please check that pandoc is installed:
186
https://pandoc.org/installing.html
187
make: *** [Makefile:20: html] Error 2
这与这个问题非常相似,构建文档由于缺少pandoc而失败,但当我尝试这些答案中列出的解决方案时,它并不能解决问题。此外,我使用斯芬克斯而不是阅读文档。
我的sphinx.yml文件(根据部署sphinx文档在线教程中列出的建议(是:
name: Sphinx build
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build HTML
uses: ammaraskar/sphinx-action@master
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: html-docs
path: docs/build/html/
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/main'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/build/html
此外,我的requirements.txt文件是:
furo==2021.11.16
nbsphinx
sphinx_gallery
sphinx_rtd_theme
markupsafe==2.0.1
geostates
geopandas
pandas
jinja2>=3.0
pypandoc
很明显,pandoc
安装中出现了一些问题,其中.ipynb
文件被绑定,将被转换为要在HTML中呈现的markdown文件。有人知道这里的解决方案吗?我尝试将上述问题答案中的代码添加到我的conf.py
文件中,但这并没有解决问题。我认为这可能与conda对pip有关,但我不确定如何解决这个问题。
我的这个测试项目的repo在这里可用,你可以在Actions选项卡下查看整个构建错误消息
更新:我似乎需要(可能(做一些与在sphinx.yml
文件中添加一些代码行有关的事情?
编辑9/22:
从在线阅读Pandoc教程中可以看出:
name: Simple Usage
on: push
jobs:
convert_via_pandoc:
runs-on: ubuntu-18.04
steps:
- uses: docker://pandoc/core:2.9
with:
args: "--help" # gets appended to pandoc command
是如何用GitHub Actions设置Pandoc的。唯一的问题是,我很困惑如何将这些代码集成到sphinx.yml
文件中(在哪里以及复制什么代码(,以及将哪些命令作为参数传递?
错误发生在ammaraskar/sphinx-action@master
操作中。该操作设置了自己的Docker容器,因此在主运行程序中安装pandoc不会有任何效果。
该操作的文档似乎可以通过设置适当的pre-build-command
来安装pandoc,例如
- name: Build HTML
uses: ammaraskar/sphinx-action@master
with:
pre-build-command: >-
apt-get update && apt-get install -y pandoc
但是,此不起作用;有一个pull请求可能会解决此问题,但尚未合并。
@mzjn在评论中也提到了一种可能性,那就是在文件docs/requirements.txt中使用pypandoc_binary
而不是pypandoc
。这通常是首选解决方案。然而,动作图像中使用的版本相当旧,因此安装程序无法找到匹配的版本,并且安装程序错误地显示消息"它";找不到pypandoc_binary的匹配分布;。
因此,似乎唯一真正的选择是使用不同的操作,或者分叉并修复ammaraskar/sphinx-action
。例如,在GitHub上分叉存储库后,操作的Dockerfile可以更改为包含pandoc:的副本
COPY --from=pandoc/minimal:2.19.2 /pandoc /usr/bin/pandoc
在Dockerfile中间添加上面的行将在用于运行操作的映像中包括静态编译的pandoc二进制文件。
新操作可以通过用新叉的名称替换sphinx.yml
中的ammaraskar/sphinx-action
来使用。